我看过关于这个问题的类似帖子,但不知道该如何让执行的代码符合正确的格式,即 foo --bar \'a='b'\'。我最好的尝试是...
我看过关于这个问题的类似帖子,但不知道该如何让执行的代码符合正确的格式,而正确的格式应该是 foo --bar "a='b'"
。我最好的尝试是
#!/bin/bash -x
bar='--bar ''"''a='"'"'b'"'"'"'
cmd=(foo $bar)
echo ${cmd[@]}
eval ${cmd[@]}
的输出对于 来说是正确的 echo
,但对于 来说不正确 eval
+ bar='--bar "a='\''b'\''"'
+ cmd=(foo $bar)
+ echo foo --bar '"a='\''b'\''"'
foo --bar "a='b'"
+ eval foo --bar '"a='\''b'\''"'
++ foo --bar 'a='\''b'\'''
使用该选项执行命令的正确方法是什么?