コマンドの終了コードを抽出して条件付きで使用するにはどうすればよいですか?たとえば、次のスクリプトを見てください。
i=4
if [[ $i -eq 4 && $(command) -eq 0 ]]
then
echo "OK"
else
echo "KO"
fi
両方の条件が満たされると、スクリプトは操作を実行する必要があります。 2番目の場合は、上記のスクリプトのコマンド出力の代わりに終了ステータスを確認して、コマンドが成功したかどうかを確認する必要があります。
答え1
if [ "$i" -eq 4 ] && command1; then
echo 'All is well'
else
echo 'i is not 4, or command1 returned non-zero'
fi
$(command) -eq 0
コードに示すようにテストします。出力command
終了コードの代わりに。
command1
注:私はasではなく標準ユーティリティの名前を使用していますcommand
。command
答え2
$(somecmd)
出力をキャプチャしますsomecmd
。コマンドの終了コードを確認するには、if
ステートメントの条件付き部分に直接入力するだけです。
i=4
if [[ $i -eq 4 ]] && false ; then
echo this will not print
fi
if [[ $i -eq 4 ]] && true ; then
echo this will print
fi
答え3
終了コードをキャプチャするには、コマンドを実行した直後(他のコマンドを実行する前)に$?を使用します。それからあなたは次のことをすることができます
ls /proc/$PPID/fd
ls=$?
if test $ls != 0; then
echo "foo failed"
if test $ls = 2; then
echo " quite badly at that"
fi
fi
つまり、終了コードに関連する式を複数回評価できます。