'$?' ? Bu bir değişken mi?

21

Soru oldukça basit ileri. Önceki komutun çıkış kodunu $? kullanarak alabilirim. Ama tam olarak nedir?

Bunun bir değişken olduğunu düşünmüyorum, çünkü _ 'den farklı bir değişken adına herhangi bir özel karakteriniz olamaz.

foo?foo=10

hatayla sonuçlanır: foo?foo=10: command not found

Yani eğer değişken değilse, o nedir? Başkaları var mı?

    
sordu daltonfury42 09.07.2015 20:24

4 cevap

20

Bu nedir?

$? , bir komutun, işlevin veya komut dosyasının kendisinin çıkış durumunu depolayan yerleşik bir değişkendir.

$? , çalıştırılan son komutun çıkış durumunu okur. Bir işlev döndükten sonra, $? , işlevde yürütülen son komutun çıkış durumunu verir. Bu, Bash'ın işlevlerini "geri dönüş değeri" verme biçimidir. Başarıda 0 veya hatada 1 - 255 aralığında bir tam sayı döndürür.

Başkaları da var mı?

Evet, bash'ta bu tür yerleşik değişkenler var. buradaki bir listeyi görebilirsiniz. bakınız:   İşte

    
verilen cevap Ron 09.07.2015 20:36
22

$? bir değişkendir, ancak özel bir karakter, bu yüzden özel karakterlere izin verilir. ($?) En son yürütülen ön plan boru hattının çıkış durumuna genişletir.

Sadece bir tane değil, kabuk çeşitli parametrelere özel olarak davranıyor. Bu parametreler sadece referans alınabilir; onlara atama izin verilmiyor:

Variable    Meaning
%pre%          Filename of script
          Positional parameter #1
 -      Positional parameters #2 - #9
       Positional parameter #10
$#          Number of positional parameters
"$*"        All the positional parameters (as a single word) *
"[email protected]"        All the positional parameters (as separate strings)
${#*}       Number of positional parameters
${#@}       Number of positional parameters
$?          Return value
$$          Process ID (PID) of script
$-          Flags passed to script (using set)
$_          Last argument of previous command
$!          Process ID (PID) of last job run in background

* Must be quoted, otherwise it defaults to [email protected]

Kaynaklar:

verilen cevap Sylvain Pineau 09.07.2015 20:37
6

$? , bir özel kabuk parametresidir (değişken).

Genel olarak, tüm kullanıcı tanımlı değişkenler yalnızca [:alnum:] i.e. [a-zA-Z0-9_] karakter sınıfındaki karakterleri kullanarak adlandırılmalıdır (ayrıca [0-9] ile başlayamaz).

Özetle, $? özel bir değişkendir ( ve bunlardan çok azı var. ) Kabuğun kendisinin bir önceki komutunun çıkış kodunu sağlayan (dahili veya başarısız olan) dahili özelliği olarak düşünülebilir.

Değişkenler hakkında daha fazla fikir edinmek için bunu okuyabilirsiniz .

    
verilen cevap heemayl 09.07.2015 20:40
4

$? , her zaman son çalıştırılan komutun geri dön / çıkış kodunu tutan bash özel bir değişkendir.

Bir terminalde echo $? dosyasını çalıştırarak görüntüleyebilirsiniz.

Dönüş kodları [0; 255].
% Co_de% dönüş kodu genellikle her şeyin yolunda olduğu anlamına gelir.
Diğer değerler hataları gösterir. Çoğu uygulama 0 veya özel değer döndürür. Bir komut bulunamadıysa, değişken genellikle 1

içeriyor

Bu değişkeni belirli bir değere ayarlamak isterseniz, bunu 127 ile döndürmek için bash -c "exit 5" ile kolayca yapabilirsiniz.

    
verilen cevap Byte Commander 09.07.2015 20:36

Etiketlerdeki diğer soruları oku