2012-03-01 22 views
24

Atama işlevdeki bir yerel değişkene göre, bash içindeki komut ikamesinin çıkış kodunu nasıl kontrol edebilirim?
Lütfen aşağıdaki örneklere bakınız. İkincisi, çıkış kodunu kontrol etmek istediğim yer.
Birisi bunun için iyi bir çözüm veya doğru çözüm var mı?bash local değişken atamasında komut ikamesi çıkış kodu

$ function testing { test="$(return 1)"; echo $?; }; testing 
1 
$ function testing { local test="$(return 1)"; echo $?; }; testing 
0 

cevap

31

sen (aslında sadece BASH yerleşiklere adam sayfası) local için adam dosyasına bakarsanız, başarıyla yerel değişken oluşturulduktan sonra 0 çıkış kodu verir, kendi komutası, olarak değerlendirilir. Yani local, son çalıştırılan hata kodunun üzerine yazıyor.

bu deneyin:

function testing { local test; test="$(return 1)"; echo $?; }; testing 

DÜZENLEME: devam ettim ve sizin için denedik, ve çalışıyor.

+0

Teşekkür ederim, her zamanki gibi, sorumu gönderdikten hemen sonra, önerdiğim gibi çıkacak cevabı kendim buldum. 8 saat geçmeden önce kendi sorularımı cevaplamak için çok az bir itibarım var. Ama 'adam yerel' bana 'LOCAL (8postfix)' manpage man sayfasını verir, bu yüzden çok yararlı değil. Ama ben onu http://mywiki.wooledge.org/BashPitfalls#local_varname.3D.24.28command.29 – Vampire

+0

adresinde buldum. Bir başka bilgi kaynağı 'man bash' olurdu. "yerel", "SHELL BUILTIN COMMANDS" bölümünde belirtilmiştir. –

+0

'help' komutu, yerleşik komutlarla ilgili belgeleri döndürür. 'Yerel yardım'a bakın. – Eliot