GNU/Linux >> Belajar Linux >  >> Linux

Apa yang dimaksud dengan gema $? melakukan?

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;-)


Linux
  1. Apa Artinya “–” (tanda hubung ganda)?

  2. Apa yang Dilakukan "lc_all=c"?

  3. Apa itu Exec 3?

  1. Apa yang poll() lakukan dengan batas waktu 0?

  2. Asal utas kworker

  3. Apa yang dilakukan 'bash -c'?

  1. Apa yang dilakukan % di string shell Linux?

  2. Apa yang dilakukan -e dalam bash shebang?

  3. Apa yang dilakukan kill -- -0?