it-swarm-tr.com

$ 'İn anlamı nedir? Shell betiğinde?

Bir Shell betiğinden geçerken "$?" Terimini gördüm. Bu terimin önemi nedir?

37
Renjith G

$?, en son yürütülen ön plan boru hattının çıkış durumuna genişler. Bash kılavuzunun Özel Parametreler bölümüne bakın .

Daha basit bir ifadeyle, son komutun çıkış durumudur.

43
cjm

Cjm'nin cevabı doğru, ama $? Shell betiklerinde aptalca kullanılabilir ve buna karşı uyarmak istiyorum. Birçok kötü Kabuk komut dosyasının tekrarlanan bir kod modeli vardır:

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

Mümkünse (okunabilirlik endişeleri bazen zorla giriyorsa) bu durumu farklı şekilde kodlamanız gerekir:

if run_some_command
then
    # Do work when command exists on success
else
    # Do failure exit work
fi

Bu son kullanım daha hızlıdır, Shell'in değişken ad alanını geçici değişkenlerin miktarlarıyla kirletmez, genellikle insanlar için çok daha okunabilir olabilir ve "pozitif mantık" kullanımını, bilişsel olmayan olumsuzlukları yazmayı teşvik eder çoğu durumda basitlik. $? çoğu kısım için.

26
Bruce Ediger

Ne ek olarak cjm dedi , $? 0 ise, önceki işlem normal (veya başarılı bir şekilde) sona erdi. Aksi takdirde bir hata oluştu.

3
Barun

$?- En son yürütülen komutun çıkış durumu.

$0- Geçerli betiğin dosya adı.

$#- Bir komut dosyasına sağlanan bağımsız değişken sayısı.

$$- Geçerli Kabuğun işlem numarası. Shell komut dosyaları için bu, altında çalıştıkları işlem kimliğidir.

3
Midhun S Sivan

, $? Bilgi istemindeki son yürüt komutunun yürütme durumunu bize sağlayın. '0' değeri, komutun başarıyla yürütüldüğünü ve '1'in başarılı olmadığını gösterir.

0
Rahul Arora