Saat melalui satu skrip shell, saya melihat istilah "$?". Apa pentingnya istilah ini?
linux
shell-script
Renjith G
sumber
sumber
Jawaban:
$?
memperluas ke status keluar dari pipa foreground yang paling baru dieksekusi. Lihat bagian Parameter Khusus dari manual Bash .Dalam istilah yang lebih sederhana, ini adalah status keluar dari perintah terakhir.
sumber
Jawaban Cjm benar, tetapi
$?
dapat digunakan dengan cara konyol dalam skrip shell, dan saya ingin memperingatkan hal itu. Banyak skrip shell yang buruk memiliki pola kode yang berulang:Jika mungkin (masalah keterbacaan terkadang mengganggu) Anda harus mengkode situasi ini secara berbeda:
Penggunaan terakhir ini lebih cepat, tidak mencemari namespace variabel shell dengan jumlah apa untuk variabel temp, sering dapat jauh lebih mudah dibaca untuk manusia dan mendorong penggunaan "logika positif", praktik penulisan conditional tanpa negasi, yang memiliki kognitif kesederhanaan dalam kebanyakan situasi. Itu tidak menggunakan
$?
sebagian besar.sumber
Selain apa yang dikatakan cjm , jika nilai
$?
0, maka proses sebelumnya tidak berakhir secara normal (atau berhasil). Kalau tidak, ada beberapa kesalahan.sumber
diff
keluar dengan 0 jika file yang dibandingkan adalah sama, dengan 1 jika mereka berbeda, dan 2 adalah kesalahan.$?
-Status keluar dari perintah terakhir dieksekusi.$0
-Nama file dari skrip saat ini.$#
-Jumlah argumen yang disediakan untuk skrip.$$
-Nomor proses dari shell saat ini. Untuk skrip shell, ini adalah proses ID di mana mereka mengeksekusi.sumber
$? berikan kami status eksekusi dari perintah eksekusi terakhir saat diminta. Nilai '0' menunjukkan bahwa perintah dieksekusi berhasil dan '1' adalah untuk tidak berhasil.
sumber
$?
menentukan status keluar dari perintah yang dieksekusi.$
diikuti dengan angka (misalnya$1
,$2
, dll) merupakan parameter dalam shell script.sumber