在反引号内分词

时间:2016-11-16 15:46:50

标签: bash shell quoting backticks

脚本中的第2行和第4行之间有什么区别(“foo bar”(没有引号)文件夹存在):

FOOBAR="foo bar"
echo `ls -la "$FOOBAR"`
args="-la \"$FOOBAR\""
echo `ls $args`

输出:

total 0 drwxr-xr-x 2 tervlad LD\Domain Users 68 15 ноя 11:47 . drwxr-xr-x 7 tervlad LD\Domain Users 238 16 ноя 18:01 ..
ls: "foo: No such file or directory
ls: bar": No such file or directory

如何让第4行正常工作?

1 个答案:

答案 0 :(得分:3)

$FOOBAR在args的赋值中得到了扩展。引号也在$扩展之前解释,因此引号是扩展字符串的文字部分。

只需使用数组。

args=( "-la" "$FOOBAR" )
ls "${args[@]}"