Di Bash, tampaknya ada beberapa variabel yang memiliki nilai spesial, yang secara konsisten bermakna. Contohnya,
./myprogram &; echo $!
akan mengembalikan PID dari proses yang dilatar belakangi myprogram
. Saya tahu orang lain, seperti $?
yang saya pikir adalah TTY saat ini. Apakah ada yang lain?
bash
environment-variables
dollar-sign
Z Douglas
sumber
sumber
$'\n'
adalah karakter baris baru literal yang dihasilkan dari penggantian digraf\n
dengan ASCII 10.${1}
,${*}
, dll, kawat gigi hanya untuk disambiguasi, dan sering berlebihan. Dalam isolasi,${x}
persis sama dengan$x
.$!
artinya Saya sadar!$
tapi tidak begitu.Jawaban:
$1
,$2
,$3
, ... adalah parameter posisi ."$@"
adalah susunan seperti array dari semua parameter posisi{$1, $2, $3 ...}
,."$*"
adalah perluasan IFS dari semua parameter posisi$1 $2 $3 ...
,.$#
adalah jumlah parameter posisi.$-
opsi saat ini ditetapkan untuk shell.$$
pid dari shell saat ini (bukan subkulit).$_
parameter terbaru (atau jalur abs dari perintah untuk memulai shell saat ini segera setelah startup).$IFS
adalah pemisah bidang (input).$?
adalah status keluar pipa foreground terbaru.$!
adalah PID dari perintah latar belakang terbaru.$0
adalah nama dari shell atau skrip shell.Sebagian besar di atas dapat ditemukan di bawah Parameter Khusus dalam Manual Referensi Bash. Ada semua variabel lingkungan yang ditetapkan oleh shell .
Untuk indeks komprehensif, silakan lihat Indeks Variabel Manual Referensi .
sumber
bash
halaman manual. Satu-satunya keanehan adalah yang$_
hanya disebutkan dalam konteks penggunaannya dalamMAILPATH
variabel.man(1) bash
bawah Parameter Khusus untuk sisa definisi$_
.!$
alih-alih$_
dalam skrip bash, karena yang terakhir terkadang gagal.!$
dan$_
.$_
argumen terakhir dari perintah terakhir$#
jumlah argumen yang diteruskan ke skrip saat ini$*
/$@
daftar argumen yang diteruskan ke skrip sebagai string / daftar terbatasDari atas kepala saya. Google untuk variabel khusus bash.
sumber
$@
adalah string dan$*
daftar dibatasi (menurut jawaban yang diterima di atas, lagipula)."$@"
memperluas ke daftar,"$*"
memperluas ke string tunggal. Perilaku khusus$@
berlaku ketika itu dalam tanda kutip ganda.Untuk membantu memahami apa yang dilakukan
$#
,$0
dan$1
, ...$n
lakukan, saya menggunakan skrip ini:Menjalankannya mengembalikan output yang representatif:
sumber
Perhatikan beberapa contoh; $ 0 dapat mencakup beberapa jalur utama serta nama program. Misalnya, simpan skrip dua baris ini sebagai ./mytry.sh dan jalankan.
Keluaran:
Ini adalah versi Bash (tahun 2016) saat ini, melalui Slackware 14.2
sumber