私は次のようなことをしたいです:
if [[ git status &> /dev/null ]]; then
echo "is a git repo";
else
echo "is not a git repo";
fi
終了ステータスの確認方法がわからない場合を除きます。これを修正するにはどうすればよいですか?
ありがとう
変数$?
には、最後のコマンドの戻りコードが含まれています
編集:正確な例:
git status &> /dev/null
if [ $? -eq 0 ]; then
echo "git status exited successfully"
else
echo "git status exited with error code"
fi
単にそのように
if git status &> /dev/null
then
echo "is a git repo";
else
echo "is not a git repo";
fi
または、よりコンパクトな形式で:
git status &> /dev/null && echo "is a git repo" || echo "is not a git repo"
私がよく使用するもう1つの形式は、次のとおりです。
git status &> /dev/null
if (( $? )) then
desired behavior for nonzero exit status
else
desired behavior for zero exit status
fi
これは、受け入れられた回答よりもわずかにコンパクトですが、コマンドをgregsethの回答と同じ行に配置する必要はありません(これは、必要な場合もありますが、読みにくくなる場合もあります)。
二重括弧は、zshの数式用です。(たとえば、ここを参照してください。)
編集:(( expression ))
構文はほとんどのプログラミング言語の通常の規則に従うことに注意してください。つまり、ゼロ以外の式はtrueと評価され、ゼロはfalseと評価されます。他の選択肢([ expression ]
、、、、など)は[[ expression ]]
、通常のシェル規則に従います。つまり、0(エラーなし)はtrueと評価され、ゼロ以外の値(エラー)はfalseと評価されます。したがって、この回答を使用する場合は、and句を他の回答から切り替える必要があります。if expression
test expression
if
else