set -e
スクリプトを開きました。唯一のことは、ここで失敗したときにスクリプトを終了させたくありませんが、他のすべてのコマンドも同じように実行したいコマンドが1つあることです。set -e
エラーコードが発生したときにスクリプトを終了せずに実行を続けるにはどうすればよいですか?
問題のスクリプト:
native=$(pacman -Qenq -)
stdinがデフォルトのパッケージ名でない場合、stdinにエラーコードが書き込まれます。
ベストアンサー1
set -e
aka はset -o errexit
条件の一部であるコマンドでは機能しません。たとえば、次のようになります。
if cmd; do
until cmd; do
while cmd; do
cmd || whatever
cmd && whatever
ERR
これはそれをサポートするシェルトラップにも当てはまります。
したがって、コマンドの失敗を無視する慣用的な方法は次のとおりです。
cmd || : errors ignored
それ以外の場合:
cmd || true
cmd || :
これにより、呼び出しはキャンセルされ、set -e
0に設定されます(cmd
失敗時/へ$?
の呼び出し)。:
true
cmd
cmd && true
ret=$?
また、キャンセルしますがset -e
終了状態を維持しますcmd
。