it-swarm-id.com

Apa arti dari $? dalam skrip Shell?

Saat melalui satu skrip Shell, saya melihat istilah "$?". Apa pentingnya istilah ini?

37
Renjith G

$? memperluas ke status keluar dari pipa latar yang paling baru dieksekusi. Lihat bagian Parameter Khusus dari manual Bash .

Dalam istilah yang lebih sederhana, ini adalah status keluar dari perintah terakhir.

43
cjm

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 bagi manusia dan mendorong penggunaan "logika positif", praktik penulisan conditional tanpa negasi, yang memiliki kognitif kesederhanaan dalam kebanyakan situasi. Itu tidak jauh dengan penggunaan $? sebagian besar.

26
Bruce Ediger

Selain apa cjm said , jika nilai $? adalah 0, maka proses sebelumnya tidak berakhir secara normal (atau berhasil). Kalau tidak, ada beberapa kesalahan.

3
Barun

$?- Status keluar dari perintah terakhir yang dijalankan.

$0- Nama file skrip saat ini.

$#- Jumlah argumen yang disediakan untuk skrip.

$$- Nomor proses dari Shell saat ini. Untuk skrip Shell, ini adalah ID proses yang digunakan untuk mengeksekusi.

3
Midhun S Sivan

$? berikan kami status eksekusi dari perintah eksekusi terakhir pada Prompt. Nilai '0' menunjukkan bahwa perintah dieksekusi berhasil dan '1' adalah untuk tidak berhasil.

0
Rahul Arora