shell脚本“$ {array [@]}”扩展:第一个和最后一个条目有额外的字符

时间:2015-04-09 20:35:01

标签: arrays bash shell scripting

我有一个使用数组的shell脚本。脚本循环遍历数组的条目,但由于某种原因,第一个和最后一个条目有问题。

数组:

Queue_Names=( CLQueue DLQ ExpiryQueue )

for循环:

for i in “${Queue_Names[@]}”
do
     #do stuff
done 

我可以在控制台中看到并显示第一个条目显示:�CLQueue。 最后一个条目显示:ExpiryQueue�

我猜这些是了解数组开始和结束的标记。不幸的是,它干扰了脚本的功能。我使用这些队列名称来搜索某些内容,但由于添加了字符而无法找到它。我如何摆脱它们或者我是否做了代码更改以避免这个问题?

1 个答案:

答案 0 :(得分:5)

“${Queue_Names[@]}”不是"${Queue_Names[@]}",因为“”不是""

“聪明的引语”在bash中根本不被视为引号;因此,效果与扩展未加引号相同 - 在数组内容上进行字符串拆分和全局扩展 - 在起始和结束字符周围嫁接文字“引号”。

您需要使用真实的引号 - "" - 不要打开/关闭由某些文字处理软件或公司电子邮件工具创建的“智能引号”。