文字列配列を繰り返しながら、値の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 ]]
引用符は必要ありません(実際には右側に拡張を防ぐ特別な意味があります)。==
代わりに使用することもできます=
。