GNU/Linux >> Belajar Linux >  >> Linux

Manakah Parameter/variabel Khusus Shell (bash)?

Saya telah menemukan beberapa parameter khusus dengan Bash yang dimulai dengan $ tanda. Contoh:Saat saya mengembara untuk status keluar, saya tahu tentang $? , proses ID dengan $$ dll.

Jadi, saya berbagi posting ini untuk mengetahui parameter bash (shell) khusus dan penggunaannya.

Jawaban yang Diterima:

Mengacu pada 3.4.2 Parameter Khusus dari Manual Referensi Bash.

Parameter Khusus:

  • $*

($*) Perluas ke parameter posisi, mulai dari satu. Ketika ekspansi tidak dalam tanda kutip ganda, setiap parameter posisi diperluas ke kata yang terpisah. Dalam konteks di mana itu dilakukan, kata-kata itu tunduk pada pemisahan kata lebih lanjut dan perluasan nama jalur. Ketika ekspansi terjadi dalam tanda kutip ganda, ekspansi menjadi satu kata dengan nilai setiap parameter dipisahkan oleh karakter pertama dari variabel khusus IFS. Artinya, “$*” sama dengan “$1c$2c…”, di mana c adalah karakter pertama dari nilai variabel IFS. Jika IFS tidak disetel, parameter dipisahkan oleh spasi. Jika IFS adalah null, parameter digabungkan tanpa pemisah yang mengganggu.

  • [dilindungi email]

([email protected]) Perluas ke parameter posisi, mulai dari satu. Ketika ekspansi terjadi dalam tanda kutip ganda, setiap parameter diperluas ke kata yang terpisah. Artinya, “[dilindungi email]” sama dengan “$1” “$2” …. Jika ekspansi tanda kutip ganda terjadi dalam sebuah kata, perluasan parameter pertama digabungkan dengan bagian awal kata asli, dan perluasan parameter terakhir digabungkan dengan bagian terakhir dari kata asli. Jika tidak ada parameter posisi, “[dilindungi email]” dan [dilindungi email] tidak akan diperluas (yaitu, dihapus).

  • $#

($#) Memperluas jumlah parameter posisi dalam desimal.

  • $?

($?) Memperluas ke status keluar dari pipeline latar depan yang paling baru dijalankan.

  • $-

($-, tanda hubung.) Memperluas ke flag opsi saat ini seperti yang ditentukan saat pemanggilan, oleh perintah set bawaan, atau yang disetel oleh shell itu sendiri (seperti opsi -i).

  • $$

($$) Perluas ke ID proses shell. Dalam subkulit (), ini diperluas ke ID proses dari shell yang memanggil, bukan subkulit.

  • $!

($!) Perluas ke ID proses pekerjaan yang paling baru ditempatkan ke latar belakang, baik dijalankan sebagai perintah asinkron atau menggunakan bg builtin (lihat Job Control Builtin).

  • $0

($0) Perluas ke nama shell atau skrip shell. Ini diatur pada inisialisasi shell. Jika Bash dipanggil dengan file perintah (lihat Skrip Shell), $0 diatur ke nama file itu. Jika Bash dimulai dengan opsi -c (lihat Memanggil Bash), maka $0 disetel ke argumen pertama setelah string yang akan dieksekusi, jika ada. Jika tidak, itu disetel ke nama file yang digunakan untuk memanggil Bash, seperti yang diberikan oleh argumen nol.

Ini juga dapat dicetak dari halaman manual bash:

$ man bash | awk '/Special Parameters$/','/Shell Variables$/'

Di atas sama dengan parameter khusus yang didefinisikan POSIX.

Terkait:Apa yang dilakukan "set -f" di Korn Shell?

Selain itu, ada parameter posisi $1 , $2 , … yang berisi argumen baris perintah ke shell atau fungsi saat ini (3.4.1 Parameter Posisi). Mereka juga merupakan fitur POSIX.

Versi Bash yang lebih lama juga mencantumkan $_ sebagai parameter khusus, tetapi sekarang terdaftar di antara variabel lain yang ditetapkan oleh shell (5.2 Bash Variables). $_ bukan POSIX dan shell lain mungkin tidak mendukungnya.

  • $_

($_ , sebuah garis bawah.) Saat memulai shell, setel ke nama path absolut yang digunakan untuk menjalankan skrip shell atau shell yang dieksekusi seperti yang diteruskan di lingkungan atau daftar argumen. Selanjutnya, memperluas argumen terakhir ke perintah sebelumnya, setelah ekspansi. Juga atur ke nama path lengkap yang digunakan untuk menjalankan setiap perintah yang dijalankan dan ditempatkan di lingkungan yang diekspor ke perintah itu. Saat memeriksa email, parameter ini menyimpan nama file email.


Linux
  1. Penerjemah Shell mana yang Menjalankan Skrip Tanpa Shebang?

  2. Navigasi Direktori Cepat Di Bash Shell?

  3. Apakah Ada Konvensi Penamaan Untuk Variabel Dalam Skrip Shell?

  1. Perbedaan Antara Variabel Shell Yang Diekspor Dan Yang Tidak Di Bash?

  2. Perbedaan Penggunaan Antara Variabel Shell Dan Variabel Lingkungan?

  3. Apa itu Pemisah Kata Readline?

  1. Apakah Variabel Non-lingkungan Diteruskan Ke Subkulit Dipanggil Dengan Substitusi Perintah?

  2. Memahami Arti `$_`?

  3. Fungsi Dalam Variabel Shell?