Bashでいつ「||true」を使用しますか?

Bashでいつ「||true」を使用しますか?

私は " "について非常に疑問に思ったので、|| true次の2つの例を書きました。

例 #1

    #!/usr/bin/env bash
    
    rm some_random_file_that_does_not_exist
    
    echo "End of program"

実行すると、次の結果が生成されます。

$ ./remove.sh
rm: cannot remove 'some_random_file_that_does_not_exist': No such file or directory
End of program

例 #2

#!/usr/bin/env bash

rm some_random_file_that_does_not_exist || true

echo "End of program"

実行すると、次のような結果が生成されます。

$ ./remove.sh
rm: cannot remove 'some_random_file_that_does_not_exist': No such file or directory
End of program

私が見ることができる唯一の違いは、例#1では存在しないファイルの行を削除しようとした結果コードが1ですが、例#2では結果コードが0(ゼロ)であることです。

私がこの ""を理解する方法は、|| true""演算子の左側にあるコマンドの実行が||結果コード0で終わることを確認することです。

|| trueだから私の質問は...この理由に加えて、Bashのコマンドの最後に ""を使用することを正当化する他の理由はありますか?

ベストアンサー1

|| trueerrexitシェルオプションが設定されている場合は、エラー時に直ちにシャットダウンを抑制するために使用できます。このオプションは、スクリプトで明示的にset -e有効にするか、明示的なインタプリタとオプションを使用してスクリプトを呼び出して有効にすることができます。同様のシェルでは、たとえば(何もうまくいかないユーティリティ)を代わりに使用できます。set -ebash -e scriptnameshbash:true|| :

同じ目的でMakefileレシピにも使用できます。

おすすめ記事