Bash:需要在字符串周围删除单引号

时间:2015-01-06 06:17:19

标签: bash

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

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

当&#39; xyz&#39;的值在脚本中被替换,该值在其周围有单引号:

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

为什么要添加单引号以及如何删除它们?

谢谢!

2 个答案:

答案 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会发生什么,分配分为两部分:

  1. 评估$abc
  2. 分配到$xyz
  3. 而不仅仅是第2步。

    也许在你的情况下,你应该考虑已经改变abc的作业,但我不知道因为无知;)