Çevreye bağlı, ama kötü bir tarz olduğunu söyleyebilirim.
Unix benzeri sistemler, 0 çıkış durumunun başarıyı ve sıfır olmayan çıkış durumlarının başarısızlığı ifade ettiği konusunda güçlü bir kurala sahiptir. Hepsi olmasa da bazı programlar, sıfır olmayan çıkış kodları ile farklı türdeki hataları birbirinden ayırır; örneğin grep
, desen bulunursa genellikle 0, bulunmuyorsa 1 ve eksik dosya gibi bir hata varsa 2 (veya daha fazla) döndürür.
Bu konvansiyon Unix mermilerine oldukça sıkı bir şekilde bağlı. Örneğin, sh
, bash
ve diğer Bourne benzeri kabuklar, if
deyim davranır başarı doğru / gibi 0 çıkış durumu ve başarısızlık / yanlış olarak sıfırdan farklı çıkış durumu:
if your-command
then
echo ok
else
echo FAILURE
fi
MS Windows kapsamındaki sözleşmelerin benzer olduğuna inanıyorum.
Şimdi durdurma şey kullandığı alışılmamış çıkış kodları, başka hiçbir şey, onunla etkileşime, ancak bir iyi kurulmuş kongre ihlal ettiğinize dikkat etmek zorundasınız ve özellikle eğer o kendi programını yazmaktan kesinlikle var olabilir sonra geri dönüp sizi ısırmaya .
Bir programın bu tür bilgileri döndürmesinin olağan yolu, programı şu şekilde yazdırmaktır stdout
:
status = $(your-command)
echo Result is $status
set -e
kıracaktı.