我试图遍历一个字符串数组,并对其中一个值做一些不同的事情。字符串比较在每个元素上都失败。
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
Run Code Online (Sandbox Code Playgroud)
我也试过(结果相同):
if [ "$i"='green' ];
Run Code Online (Sandbox Code Playgroud)
和
if [ $i='green' ];
Run Code Online (Sandbox Code Playgroud)
和
if [ $i="green" ];
Run Code Online (Sandbox Code Playgroud)
以上各项的输出:
i('red') is equal to green
i('blue') is equal to green
i('yellow') is equal to green
i('green') is equal to green
Run Code Online (Sandbox Code Playgroud)
我在比较时做错了什么?
cho*_*oba 13
缺少空格。
[ $i="green" ] 方法 [ -n $i=green ]
你需要
[ "$i" = green ]
Run Code Online (Sandbox Code Playgroud)
甚至
[ green = "$i" ]
Run Code Online (Sandbox Code Playgroud)
这甚至适用于i=-n.
如果您不需要可移植到其他 shell,则可以在 bash 中使用双方括号。
[[ $i = green ]]
Run Code Online (Sandbox Code Playgroud)
不需要引号(实际上,在右侧它们具有特殊含义 - 它们防止扩展)。您也可以使用==代替=。