文字列を比較するときは、次を使用できます。POSIX =オペレーター:

文字列を比較するときは、次を使用できます。POSIX =オペレーター:

シェル引数を文字列と比較すると、このエラーが発生します。コードが次の場合:

online=true
if [ "$2" -eq '-o' ]
then
    online=false
fi
echo $online

次に、入力、例えば次のような結果が得られる。

$ ./currency.sh 2 -o
./currency.sh: line 13: [: -o: integer expression expected
true

ベストアンサー1

この行では:

if [ "$2" -eq '-o' ]

-eq2番目の引数を数値として使用する算術演算子を使用しました。

もちろん、その理由だけで失敗しました。


文字列を比較するときは、次を使用できます。POSIX =オペレーター:

if [ "$2" = '-o' ]

このバージョンは次のように作成されたため、すべてのシェルで動作する必要があります。POSIX(ポータブルオペレーティングシステムインタフェース)

欲しいなら吹く-特定バージョン:

if [[ "$2" == '-o' ]]

このバージョンは以下でのみ動作します。Bash (Bourne Identity シェル)そして似ています。


対照的に、二重角括弧[[ .. ]]==演算子は次のように定義されています。吹く他のシェルでは動作しません。

おすすめ記事