2016-03-21 24 views
2

Hatalı bir komuttan "0" çıkış kodunu döndürmek istiyorum.Çıkış kodu 0 başarısız bir komuttan nasıl döndürülür

function a() { 
    ls aaaaa 2>&1; 
} 

if ! $(a); then 
    return 0 
else 
    return 5 
fi 
+0

Geri dönüş hakkında ne dersiniz? a ' – user000001

+0

Komut ikamesine gerek yok basit kullanım 'if! a; o zaman ... '' – andlrc

+0

'stderr' çıktısı' stdout''a yazılırsa, komut başarısızlığı durumunda komut, komut çıktısını susturarak ve yalnızca komut yürütme durumunu alarak önlenebilecek kötü bir hata verir. '$?' – Inian

cevap

3

Basitçe her zaman başarılı çıkmak için bir işlev zorlamak için işleve return 0 ekleyin: ziyade, bunu yapmanın daha kolay bir yolu var mı.

function a() { 
    ls aaaaa 2>&1 
    return 0 
} 

a 
echo $? # prints 0 

Eğer komutuna || true ekleyebilirsiniz herhangi bir nedenle satır içi yapmak isterseniz:

ls aaaaa 2>&1 || true 
echo $? # prints 0 

Eğer !

! ls aaaaa 2>&1 
echo $? # prints 0 

! ls /etc/resolv.conf 2>&1 
echo $? # prints 1 
ile çıkış statü basit veya Başına komutunu ters isterseniz

Ayrıca, genel olarak ne elde etmeye çalıştığınızı belirtirseniz, sizi daha iyi cevaplara yönlendirebiliriz.

+0

Dosya yoksa ls /etc/resolv.conf 2> & 1 'konsolda çirkin bir hata atacak :) – Inian

+0

. Çıktının tamamı, '2> & 1' yerine' &>/dev/null' ya da stderr ile değiştirilerek yalnızca 2>/dev/null' ile değiştirilerek bastırılabilir. –

İlgili konular