私は次のようにscript.shを書いています。
ls a || ls > /dev/null || echo "both command fails"; exit 3
echo 5 # not showed up
exit 3
command1とcommand2の両方が失敗した場合にのみ実行したいと思います。しかし、ls > /dev/null
問題がなくてもexit 3
まだ解雇されてecho 5
表示されないようです。
この問題を解決するために私ができることはありますか?
答え1
問題は、||
バインディングがそれよりもタイトで、;
最初の行が2つのコマンドで構成されることです。 1つ目は複合コマンドで、ls || ls || echo
2つ目はまさにそれですexit 3
。 meuhのコメントで述べたように、次のように書く必要があります。
ls a || ls > /dev/null || { echo "both command fails"; exit 3; }
echo 5 # not showed up