私は " "について非常に疑問に思ったので、|| 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
|| true
errexit
シェルオプションが設定されている場合は、エラー時に直ちにシャットダウンを抑制するために使用できます。このオプションは、スクリプトで明示的にset -e
有効にするか、明示的なインタプリタとオプションを使用してスクリプトを呼び出して有効にすることができます。同様のシェルでは、たとえば(何もうまくいかないユーティリティ)を代わりに使用できます。set -e
bash -e scriptname
sh
bash
:
true
|| :
同じ目的でMakefileレシピにも使用できます。