Bash:需要去除字符串周围的单引号

Bash: need to strip single quotes around a string

以下是我的 bash 脚本中的代码片段:

....
....
for ((i=0; i<${#abc[@]}; i++))
  do
    xyz=${abc[i]}
....
....

在脚本中替换'xyz'的值时,该值用单引号括起来:

'"6b76cdae-a4a8-4e88-989d-1581ae2d5b98"'

为什么要添加单引号,如何去掉它们?

谢谢!

您可以尝试使用参数扩展删除数组 abc 中的 all 个单引号:

abc=(${abc[@]//\'/})

您可以尝试使用参数扩展删除字符串 xyz 中的 all 个单引号:

xyz=${xyz//\'/}

你可以替换

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 的情况是作业分为两部分:

  1. 评价$abc
  2. 分配给$xyz

而不只是第 2 步。

也许在您的情况下,您应该考虑已经更改 abc 的分配,但由于无知我不知道 ;)