Bashで文字列比較が失敗する

Bashで文字列比較が失敗する

文字列配列を繰り返しながら、値の1つに対していくつかの異なる操作を実行したいと思います。すべての要素に対して文字列比較が失敗します。

arr[0]='red'
arr[1]='blue'
arr[2]='yellow'
arr[3]='green'

## now loop through the above array
for i in "${arr[@]}"
do
        if [ "$i"="green" ];
        then
                echo "i('$i') is equal to green"
        else
                echo "i('$i') is not equal to green"
        fi

done

私も試しました(同じ結果):

if [ "$i"='green' ];

そして

if [ $i='green' ];

そして

if [ $i="green" ];

上記の各項目の出力:

i('red') is equal to green
i('blue') is equal to green
i('yellow') is equal to green
i('green') is equal to green

比較で私が何を間違っているのだろうか?

ベストアンサー1

空白がありません。

[ $i="green" ]方法[ -n $i=green ]

あなたはする必要があります

[ "$i" = green ]

でも

[ green = "$i" ]

これにも当てはまりますi=-n

別のシェルに移植する必要がない場合は、bashで角括弧を使用できます。

[[ $i = green ]]

引用符は必要ありません(実際には右側に拡張を防ぐ特別な意味があります)。==代わりに使用することもできます=

おすすめ記事