最初に書いておきますが、すべての場合に!を入れたほうがいいと言っているわけではありません。 エラーハンドリングの場合に通用します。
なぜこれを書いたのかというと、GitHubを見ていたら、エラーハンドリング時に真で返してしまっているものが多く見受けられたからです。
ではなぜ!を入れたほうがいいのか、
false || echo '1が出るよ:' $?
echo '0が出るよ:' $?
これを見ると、エラーハンドリングしても真値で返ってきています。
false || ! echo '1が出るよ:' $?
echo '1が出るよ:' $?
こうすることで偽値で返すことができます。
もし気になったらシェルで実行してみてください。
false ||:
逆にこれはすべてを0で返せます。
cat user.conf || cat default.conf
勿論こういうのは例外です。
三か月前に書き終えたまま放置してた。