以下是我的bash脚本中的代码段:
....
....
for ((i=0; i<${#abc[@]}; i++))
do
xyz=${abc[i]}
....
....
当&#39; xyz&#39;的值在脚本中被替换,该值在其周围有单引号:
'"6b76cdae-a4a8-4e88-989d-1581ae2d5b98"'
为什么要添加单引号以及如何删除它们?
谢谢!
答案 0 :(得分:7)
您可以尝试使用参数扩展删除数组abc中的所有单引号:
abc=(${abc[@]//\'/})
您可以尝试使用参数扩展删除字符串xyz中的所有单引号:
xyz=${xyz//\'/}
答案 1 :(得分:3)
您可以替换
XYZ = $ {ABC [I]}
与
eval xyz = $ {abc [i]}
这是一个说明会发生什么的例子:
$ foo="'"'"bar"'"'"
$ echo $foo
'"bar"'
$ eval foo=$foo
$ echo $foo
"bar"
$ eval foo=$foo
$ echo $foo
bar
因此,神圣eval
会发生什么,分配分为两部分:
$abc
$xyz
而不仅仅是第2步。
也许在你的情况下,你应该考虑已经改变abc
的作业,但我不知道因为无知;)