在 shell 脚本中使用反引号或美元符号

在 shell 脚本中使用反引号或美元符号

我正在忙于编写 shell 脚本(使用 Bash),需要从其他命令的返回结果中填充一些变量。

所以我使用这样的语法:

VAR=`command 2>/dev/null`

但是在寻找有关脚本 shell 的信息时,我经常发现上述操作也可以通过使用以下语法来实现:

VAR=$(command 2>/dev/null)

两者对我来说都有效(在两种情况下我都收到了预期的结果),因此我想知道我是否仍然可以交替使用这两种形式,或者我是否必须坚持使用一种形式以确保符合 shell 的未来发展?

答案1

使用美元。反引号已半弃用因为它们使用起来更复杂(参见链接),除非你正在做,否则它们没有任何优势密码高尔夫并且绝对需要保存一个字符。不过,它们可能不会很快从流行的 shell 中删除,因此目前您可以放心使用它们。

答案2

尽可能坚持使用美元符号表示法$()。当你开始需要嵌套引用时,反引号会变得麻烦/混乱。例如:

$ FOO=`echo "foo's"`
$ echo $FOO
foo's

用 替换反引号$()会产生相同的输出,并且更易于阅读(需要辨别的不同角度的引号更少):

$ FOO=$(echo "foo's")
$ echo $FOO
foo's

此外,每个引号(单引号、双引号、反引号)在 shell 中都有不同的含义,因此使用 $ 有助于降低复杂性。而跟随您的开发人员会感谢您,因为他/她将更容易弄清楚您做了什么。

相关内容