böyle, benim Bash komut bir temizlik eylemi istiyorum içinde kabuk script exitCode alın:bir "tuzak EXIT"
#! /bin/bash
set -eu
trap 'echo "E: failed with exitcode $?" 1>&2' ERR
true
false
$?
Kullanılması doğal seçim olarak akla geldiği, ancak bu durum böyle değil. Her zaman 0
içerir. Ben ERR
tuzak exitcode üzerinde "casus" herhangi bir yolu var mı?
[Güncelleme:] Ben önce test ne olduğunu hiçbir fikrim yok. Bu kod bir çekicilik gibi çalışır, ben de burada küçük ve güzel bir örnek olarak bırakıyorum.
+ set -eu
+ trap 'echo "E: failed with exitcode $?" 1>&2' ERR
+ true
+ false
++ echo 'E: failed with exitcode 1'
E: failed with exitcode 1
Şansı ERR
dönen komutu bir &&
veya ||
veya diğer koşullara tabi bir şekilde gerçekleştirilmesini şunlardır:
ben '$ düşünüyorum' doğru. Senaryon benim için '1' yazdırıyor. – dogbane
Hah, neyin yanlış gittiğini biliyorum. Bu özelliği test ettiğimizde, bir tek astar yazıp alıntı yanlış anlamış. "Tuzak" eko $ ile çıkıyor? " ERR' açıkça çalışmıyor, çünkü $ $ '' trap' eyleminin _definition_ evaluatedında değerlendiriliyor. –
Arayan herkes için, [benzer bir soru burada] (http://stackoverflow.com/q/32086595/471376). – JamesThomasMoon1979