我是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