Pertanyaannya cukup lurus ke depan. Saya bisa mendapatkan kode keluar dari perintah sebelumnya dengan menggunakan $?
. Tapi apa sebenarnya itu?
Saya tidak berpikir itu adalah variabel, karena Anda tidak dapat memiliki karakter khusus atas nama variabel selain _
.
foo?foo=10
akan menghasilkan kesalahan: foo?foo=10: command not found
Jadi jika itu bukan variabel, apa itu? Apakah ada orang lain yang menyukainya?
command-line
bash
daltonfury42
sumber
sumber
Jawaban:
Apa itu?
$?
adalah variabel bawaan yang menyimpan status keluar dari perintah, fungsi, atau skrip itu sendiri.$?
membaca status keluar dari perintah terakhir yang dijalankan. Setelah fungsi kembali,$?
berikan status keluar dari perintah terakhir yang dijalankan dalam fungsi. Ini adalah cara Bash untuk memberi fungsi "nilai pengembalian." Itu kembali0
pada keberhasilan atau bilangan bulat dalam rentang1 - 255
kesalahan.Apakah ada orang lain yang menyukainya?
Ya, ada beberapa variabel bawaan seperti itu di bash. Anda dapat melihat daftar di sini . Refer: http://www.tldp.org/LDP/abs/html/exit-status.html
sumber
dash
,ksh
,zsh
, antara lain).$status
untuk tujuan yang sama$?
adalah variabel tetapi khusus, itu sebabnya karakter khusus diperbolehkan.($?)
Perluas ke status keluar dari pipa depan yang baru saja dieksekusi.Bukan satu-satunya, shell memperlakukan beberapa parameter khusus. Parameter ini hanya dapat dirujuk; penugasan kepada mereka tidak diizinkan:
Sumber:
sumber
"$*"
bukan hanya semua parameter posisi sebagai kata tunggal, tetapi semua parameter posisi dipisahkan oleh karakter pertamaIFS
sebagai kata tunggal. Karena hasilnya akan mengalami pemisahan bidang jika tidak dikutip, efeknya adalah seolah-olah$@
digunakan dalam kasus yang tidak dikutip .$?
adalah parameter shell khusus (variabel).Secara umum semua variabel yang ditentukan pengguna harus dinamai dengan hanya menggunakan karakter dari kelas karakter
[:alnum:]
yaitu[a-zA-Z0-9_]
(juga tidak dapat mulai dengan[0-9]
).Singkatnya,
$?
adalah variabel khusus ( dan ada beberapa di antaranya ) yang dapat dianggap sebagai fitur internal dari shell itu sendiri yang menyediakan kode keluar dari perintah sebelumnya (apakah berhasil atau gagal).Anda dapat membaca ini untuk mendapatkan lebih banyak gagasan tentang variabel.
sumber
$?
adalah variabel khusus dalam bash yang selalu memegang kode kembali / keluar dari perintah yang terakhir dieksekusi.Anda dapat melihatnya di terminal dengan menjalankan
echo $?
.Kode pengembalian berada dalam kisaran [0; 255].
Kode pengembalian
0
biasanya berarti semuanya baik-baik saja.Nilai-nilai lain menunjukkan kesalahan. Sebagian besar aplikasi mengembalikan
1
nilai-nilai khusus. Jika suatu perintah tidak ditemukan, variabel biasanya berisi127
Jika Anda ingin mengatur variabel ini ke nilai tertentu, Anda dapat dengan mudah melakukan ini dengan
bash -c "exit 5"
kembali misalnya kode kembali5
.sumber
setstatus() { return 5; }