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

Jon*_*vic 1 arrays bash shell scripting

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

数组:

Queue_Names=( CLQueue DLQ ExpiryQueue )
Run Code Online (Sandbox Code Playgroud)

for循环:

for i in “${Queue_Names[@]}”
do
     #do stuff
done 
Run Code Online (Sandbox Code Playgroud)

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

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

Cha*_*ffy 5

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

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

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