Yanıtlar:
$?En son gerçekleştirilen ön plan boru hattının çıkış durumuna kadar genişler. Bash kılavuzunun Özel Parametreler bölümüne bakın .
Daha basit bir ifadeyle, son komutun çıkış durumu.
Cjm'in cevabı doğrudur, ancak $?kabuk komut dosyalarında saçma bir şekilde kullanılabilir ve buna karşı uyarmak istiyorum. Çok sayıda hatalı kabuk komut dosyası, tekrarlanan bir kod düzenine sahiptir:
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 zorlanabilir), bu durumu farklı şekilde kodlamalısınız:
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, kabuğun değişken ad alanını geçici değişkenler için ne kadar tutar ile kirletmez, insanlar için genellikle daha okunaklı olabilir ve bilişsel olmayan koşulsuz yazma uygulaması olan "pozitif mantık" kullanımını teşvik eder. çoğu durumda basitlik. Çoğunlukla kullanımı ile uzakta $?.
Cjm'nin söylediğine ek olarak , değeri $?0 ise, önceki işlem normal şekilde sona erdi (veya başarıyla). Aksi takdirde bazı hatalar oluştu.
diffEğer karşılaştırılan dosyalar aynı ise 0 ile, farklı ise 1 ile çıkar ve 2 hata verir.
$?-Yapılan son komutun çıkış durumu.
$0Geçerli komut dosyasının dosya adı.
$#Bir betiğe verilen argüman sayısı.
$$-Geçerli kabuğun işlem numarası. Kabuk komut dosyaları için bu, altında işlem yaptıkları işlem kimliğidir.
, $? İstendiğinde son çalıştırma komutunun yürütme durumunu bize bildirin. '0' değeri komutun başarıyla yürütüldüğünü ve '1' ifadesinin başarısız olduğunu gösterir.
$?yürütülen komutun çıkış durumunu belirler. $ardından sayılar (örneğin $1, $2vb.) kabuk betiğindeki parametreleri temsil eder.