以下是我的bash脚本中的代码段:
....
....
for ((i=0; i<${#abc[@]}; i++))
do
xyz=${abc[i]}
....
....
Run Code Online (Sandbox Code Playgroud)
当在脚本中替换'xyz'的值时,该值在其周围有单引号:
'"6b76cdae-a4a8-4e88-989d-1581ae2d5b98"'
Run Code Online (Sandbox Code Playgroud)
为什么添加单引号以及如何剥离它们?
谢谢!
nin*_*zza 11
你可以更换
xyz=${abc[i]}
和
评估 xyz=${abc[i]}
这是一个说明会发生什么的示例:
$ foo="'"'"bar"'"'"
$ echo $foo
'"bar"'
$ eval foo=$foo
$ echo $foo
"bar"
$ eval foo=$foo
$ echo $foo
bar
Run Code Online (Sandbox Code Playgroud)
所以,神圣的事情eval是分配被分成两部分:
$abc$xyz而不仅仅是第 2 步。
也许在您的情况下,您应该考虑已经更改分配,abc但由于无知,我不知道;)
您可以尝试使用参数扩展删除数组abc 中的所有单引号:
abc=(${abc[@]//\'/})
Run Code Online (Sandbox Code Playgroud)
您可以尝试使用参数扩展删除字符串xyz 中的所有单引号:
xyz=${xyz//\'/}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5270 次 |
| 最近记录: |