用于Shell脚本中的循环



我是shell脚本的新手,最近遇到了一些我不理解的事情。

这两个脚本之间的区别是什么:

脚本1:

COLORS="RED YELLOW GREEN"
for i in $COLORS
do
echo $i
done

脚本2:

for i in "RED YELLOW GREEN"
do
echo $i
done

从我的角度来看,它们应该有相同的输出,但它们没有。输出:

脚本1:

RED
YELLOW
GREEN

脚本2:

RED YELLOW GREEN

非常感谢

区别在于引用规则和变量展开规则。

变量展开后,第一个例子中的引号消失了,这相当于3个元素上的循环:

for i in RED YELLOW GREEN
do
echo $i
done

而第二个例子是在一个元素上的循环,该元素恰好是包含空格的字符串:

for i in "RED YELLOW GREEN"
do
echo $i
done

如果你想在使用变量时获得第二种行为,你需要在变量扩展周围添加一个引用级别,即:

COLORS="RED YELLOW GREEN"
for i in "$COLORS"
do
echo $i
done

相关内容

  • 没有找到相关文章

最新更新