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.
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:
run_some_command
EXIT_STATUS=$?
if [ "$EXIT_STATUS" -eq "0" ]
then
# Do work when command exists on success
else
# Do work for when command has a failure exit
fi
Jika mungkin (masalah keterbacaan terkadang mengganggu) Anda harus mengkode situasi ini secara berbeda:
if run_some_command
then
# Do work when command exists on success
else
# Do failure exit work
fi
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.
Selain apa yang dikatakan cjm , jika nilai $?
0, maka proses sebelumnya tidak berakhir secara normal (atau berhasil). Kalau tidak, ada beberapa kesalahan.
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.
$? berikan kami status eksekusi dari perintah eksekusi terakhir saat diminta. Nilai '0' menunjukkan bahwa perintah dieksekusi berhasil dan '1' adalah untuk tidak berhasil.
$?
menentukan status keluar dari perintah yang dieksekusi. $
diikuti dengan angka (misalnya $1
, $2
, dll) merupakan parameter dalam shell script.