【问题标题】:Word splitting within backticks [duplicate]反引号内的单词拆分[重复]
【发布时间】:2016-11-16 15:46:49
【问题描述】:

脚本中的第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 行正常工作?

【问题讨论】:

  • 区别是:引号。
  • $FOOBAR 在对 args 的赋值中展开。此外,引号在 $ 扩展之前被解释,因此引号是扩展字符串的文字部分。
  • BashFAQ #50 直接就位。
  • ...反引号与它没有任何关系。您将完全ls $args 具有相同的行为,且不涉及反引号。

标签: bash shell quoting backticks


【解决方案1】:

$FOOBAR 在分配给 args 时被扩展。此外,引号在 $ 扩展之前被解释,因此引号是扩展字符串的文字部分。

只使用一个数组。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-04
    • 2021-12-20
    • 2021-09-01
    • 2016-03-08
    • 2016-12-17
    • 2021-04-06
    • 1970-01-01
    • 2013-08-13
    相关资源
    最近更新 更多