我有一个使用数组的shell脚本。脚本循环遍历数组的条目,但由于某种原因,第一个和最后一个条目有问题。
数组:
Queue_Names=( CLQueue DLQ ExpiryQueue )
for循环:
for i in “${Queue_Names[@]}”
do
#do stuff
done
我可以在控制台中看到并显示第一个条目显示:�CLQueue。 最后一个条目显示:ExpiryQueue�
我猜这些是了解数组开始和结束的标记。不幸的是,它干扰了脚本的功能。我使用这些队列名称来搜索某些内容,但由于添加了字符而无法找到它。我如何摆脱它们或者我是否做了代码更改以避免这个问题?
答案 0 :(得分:5)
“${Queue_Names[@]}”
不是"${Queue_Names[@]}"
,因为“”
不是""
。
“聪明的引语”在bash中根本不被视为引号;因此,效果与扩展未加引号相同 - 在数组内容上进行字符串拆分和全局扩展 - 在起始和结束字符周围嫁接文字“引号”。
您需要使用真实的引号 - ""
- 不要打开/关闭由某些文字处理软件或公司电子邮件工具创建的“智能引号”。