【问题标题】:What is the difference between backticks and $() in a Bash script? [duplicate]Bash 脚本中的反引号和 $() 有什么区别? [复制]
【发布时间】:2023-03-17 07:31:01
【问题描述】:

我在 Bash 脚本中看到了两种不同的形式,它们的作用似乎相同:

`some command`

和

$(some command)

这两者有什么区别,我应该什么时候使用它们?

【问题讨论】:

    标签: bash backticks


    【解决方案1】:

    没有任何语义差异。反引号语法是较旧且功能较弱的版本。请参阅man bash,“命令替换”部分。

    如果您的 shell 支持 $() 语法,请更喜欢它,因为它可以嵌套。

    【讨论】:

    • 我看到反引号也可以嵌套。例如:`echo \`foo\``
    • @MishaMoroshko:像`echo `foo`` (as opposed to $(echo $(foo))) won't work in general because of the inherent ambiguity because each ` 这样的表达式可以打开或关闭。由于运气或特殊功能,它可能适用于特殊情况。
    • 存在语义差异:反引号语法以不同且不明显的方式处理反斜杠。见:mywiki.wooledge.org/BashFAQ/082
    • 我正在使用生成文件。在那个makefile中,我有以下命令 gcc pkg-config --cflags gtk+-3.0 -o $@ $pkg-config --libs gtk+-3.0 如果我将反引号替换为bash函数调用: gcc $(pkg-config --cflags gtk+-3.0) -o $@ $
    • 另一个区别是:echo foo `#comment` 与 echo foo $(#comment)。第二个不行。 (用于在多行命令中进行注释。)
    猜你喜欢
    • 2018-09-25
    • 2015-11-07
    • 2014-05-13
    • 2011-03-26
    • 2018-04-05
    • 1970-01-01
    相关资源
    最近更新 更多