bash – if/else 文で変数を整数ではなくテキスト文字列と比較するには?

bash bash-scripting shell-script

シェルスクリプトを書く過程で、以下のif/else文がスクリプトの途中にあるという問題に遭遇しました

if [ $act -eq "add" ]
then
read - "add or update: " $comm
git commit -m "$comm $file"
else
git commit -m "$act $file"
fi

返ってくるエラーは

./gitup: line 13: [: add: integer expression expected

を使用して、スクリプトの残りの部分を処理します。ifセグメントで変数を整数ではなく文字列入力に評価/比較させるにはどうすればよいでしょうか

  32  tony_perkis666  2013-01-30


ベストアンサー

こんな感じです

act="add"
if [[ $act = "add" ]]
then
echo good
else
echo not good
fi

-eqは数値の比較に、=は文字列の比較に使用します

49  Guru  2013-01-30


この方法も有効です。Guruの答えに非常に似ていますが、二重の角括弧の必要性を取り除きます

if [ "$act" == "add" ]
then
echo "Good!"
else
echo "Not good!"
fi

8  Yokai  2016-05-14


タイトルとURLをコピーしました