【发布时间】:2023-03-17 07:31:01
【问题描述】:
我在 Bash 脚本中看到了两种不同的形式,它们的作用似乎相同:
`some command`
和
$(some command)
这两者有什么区别,我应该什么时候使用它们?
【问题讨论】:
我在 Bash 脚本中看到了两种不同的形式,它们的作用似乎相同:
`some command`
和
$(some command)
这两者有什么区别,我应该什么时候使用它们?
【问题讨论】:
没有任何语义差异。反引号语法是较旧且功能较弱的版本。请参阅man bash,“命令替换”部分。
如果您的 shell 支持 $() 语法,请更喜欢它,因为它可以嵌套。
【讨论】:
`echo \`foo\``
`echo `foo`` (as opposed to $(echo $(foo))) won't work in general because of the inherent ambiguity because each ` 这样的表达式可以打开或关闭。由于运气或特殊功能,它可能适用于特殊情况。
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)。第二个不行。 (用于在多行命令中进行注释。)