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" 由某些文字处理软件或公司电子邮件工具创建的报价。
我有一个使用数组的 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" 由某些文字处理软件或公司电子邮件工具创建的报价。