Dari man bash
:
$? Memperluas ke status keluar dari pipeline latar depan yang terakhir dieksekusi.
echo $?
akan mengembalikan status keluar dari perintah terakhir. Anda mendapatkan 127
itu adalah status keluar dari perintah yang terakhir dieksekusi keluar dengan beberapa kesalahan (kemungkinan besar). Perintah saat penyelesaian berhasil keluar dengan status keluar 0
(paling mungkin). Perintah terakhir memberikan output 0
sejak echo $v
pada baris sebelumnya selesai tanpa kesalahan.
Jika Anda menjalankan perintah
v=4
echo $v
echo $?
Anda akan mendapatkan output sebagai:
4 (from echo $v)
0 (from echo $?)
Coba juga:
true
echo $?
Anda akan mendapatkan 0
.
false
echo $?
Anda akan mendapatkan 1
.
true
perintah tidak melakukan apa-apa, hanya keluar dengan kode status 0
; dan false
perintah juga tidak melakukan apa-apa, hanya keluar dengan kode status yang menunjukkan kegagalan (yaitu dengan kode status 1
).
$?
berguna dalam skrip shell sebagai cara untuk memutuskan apa yang harus dilakukan tergantung pada cara kerja perintah sebelumnya (memeriksa status keluar). Kita dapat memperkirakan bahwa status keluar adalah 0
ketika perintah sebelumnya berhasil (berhasil diselesaikan), jika tidak, nilai numerik bukan nol.
Contoh demo:
#!/bin/bash
patience=3
read -t "$patience" -p "Press 'Enter' if you run Unix or Linux, otherwise press 'ctrl+d' "
status="$?"
if [[ $status -eq 0 ]]
then
echo "That's great :-)"
elif [[ $status -eq 1 ]]
then
echo "(exit status=$status)
You are welcome to try Unix or Linux :-)"
else
echo "(exit status=$status)
You did not answer within $patience seconds. Anyway :-)"
fi
echo "'Unix & Linux' is a question/answer web site for
Unix and Linux operating systems"
Anda mungkin bertanya bagaimana menjalankan bash shellscript tanpa Unix atau Linux;-)