web-dev-qa-db-ja.com

if / elseステートメントで変数を整数ではなくテキスト文字列と比較するにはどうすればよいですか?

シェルスクリプトの作成中に、スクリプトの途中にある次の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セグメントで変数を評価して、整数ではなく文字列入力と比較するにはどうすればよいですか。私が試した他のいくつかのことの中で "!="を使用するときは別のエラーが必要でした。

27
tony_perkis666

このようなもの:

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

-eqは数値比較用、文字列比較には=を使用

42
Guru

この方法も機能します。 @Guruの回答に非常に似ていますが、二重の角括弧の必要がなくなります。

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