最初のコマンドが失敗した場合は、両方のコマンドを実行します。

最初のコマンドが失敗した場合は、両方のコマンドを実行します。

私は次のようにscript.shを書いています。

ls a || ls > /dev/null || echo "both command fails"; exit 3
echo 5 # not showed up

exit 3command1とcommand2の両方が失敗した場合にのみ実行したいと思います。しかし、ls > /dev/null問題がなくてもexit 3まだ解雇されてecho 5表示されないようです。

この問題を解決するために私ができることはありますか?

ベストアンサー1

問題は、||バインディングがそれよりもタイトで、;最初の行が2つのコマンドで構成されることです。 1つ目は複合コマンドで、ls || ls || echo2つ目はまさにそれですexit 3。 meuhのコメントで述べたように、次のように書く必要があります。

ls a || ls > /dev/null || { echo "both command fails"; exit 3; }
echo 5 # not showed up

おすすめ記事