我有一个参数列表,其中一些包含空格,存储在变量中。调用命令时,参数无法正确解释。这是一个说明问题的最小示例:
$ cat test.sh
echo $1
echo $2
$ sh test.sh foo "bar baz"
foo
bar baz
$ args='foo "bar baz"'
$ sh test.sh $args
foo
"bar
我应该如何传递 args 来让 test.sh 打印这个?
foo
bar baz
要解释构建的 shell 代码(包括从变量中获取),可以使用
eval
。
eval "sh test.sh $args"
但是将代码放入变量真的是最好的主意吗?