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

shell script “${array[@]}” expansion: first and last entry have extra characters

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

数组:

Queue_Names=( CLQueue DLQ ExpiryQueue )

for 循环:

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

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

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

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

"Smart quotes" 在 bash 中根本不被识别为引号;因此,效果就好像扩展没有被引用一样——对数组内容进行字符串拆分和全局扩展——在开始和结束字符周围嫁接文字 "quotes"。

您需要使用真实的报价 -- "" -- 而不是 opening/closing "smart quotes" 由某些文字处理软件或公司电子邮件工具创建的报价。