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
的情况是作业分为两部分:
- 评价
$abc
- 分配给
$xyz
而不只是第 2 步。
也许在您的情况下,您应该考虑已经更改 abc
的分配,但由于无知我不知道 ;)
以下是我的 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
的情况是作业分为两部分:
- 评价
$abc
- 分配给
$xyz
而不只是第 2 步。
也许在您的情况下,您应该考虑已经更改 abc
的分配,但由于无知我不知道 ;)