我将脚本中的一个问题隔离到这个小示例中。这就是我得到的:
$ cmd="test \"foo bar baz\""
$ for i in $cmd; do echo $i; done
test
"foo
bar
baz"
这就是我所期望的:
$ cmd="test \"foo bar baz\""
$ for i in $cmd; do echo $i; done
test
"foo bar baz"
如何更改我的代码以获得预期的结果?
更新也许我的第一个例子不够好。我查看了 Rob Davis 的答案,但无法将解决方案应用于我的脚本。我试图简化我的脚本以更好地描述我的问题。这是脚本:
#!/bin/bash
function foo {
echo $1
echo $2
}
bar="b c"
baz="a \"$bar\""
foo $baz
这是与脚本输出相比的预期输出:
expected script
a a
"b c" "b