Bashの構文は何ですか||:
する?
はい
$ ls foo ||:
常に成功を収める以外に特別なことがありますか?
$ ls foo ||:; echo $?
ls foo
存在しないので失敗しても、foo
出力は常にゼロになりますか?
で始まるスクリプトで見ましたset -e
。したがって、エラーが発生しないようにするため、このサフィックス付きのコマンドがエラーを返してもスクリプトはすぐに終了しないようです。
ベストアンサー1
前のコマンドが成功を返さなかった場合にのみ成功を返します。
set -e
(別名)を使用すると、エラーを返すset -o errexit
コマンドラインがスクリプトを中断します。||:
コマンドラインの末尾に追加するとエラーは発生しません(エラーがある場合は、次のコマンドがtrueを返すため)。
基本的には次のようになります。前のコマンドにエラーがある場合は、true
コマンドラインがエラーなしで終了し、スクリプトが実行され続けるように実行してください。
ls
エラーが返されたため、日付を表示せずにスクリプトが中断されます。
set -e
ls -l /tmp/nonexistentfile
date
:
ただし、最後のコマンドは(true
)なので、スクリプトは中断されず、日付が表示されます。
set -e
ls -l /tmp/nonexistentfile || :
date