我正在忙于编写 shell 脚本(使用 Bash),需要从其他命令的返回结果中填充一些变量。
所以我使用这样的语法:
VAR=`command 2>/dev/null`
但是在寻找有关脚本 shell 的信息时,我经常发现上述操作也可以通过使用以下语法来实现:
VAR=$(command 2>/dev/null)
两者对我来说都有效(在两种情况下我都收到了预期的结果),因此我想知道我是否仍然可以交替使用这两种形式,或者我是否必须坚持使用一种形式以确保符合 shell 的未来发展?
答案1
答案2
尽可能坚持使用美元符号表示法$()
。当你开始需要嵌套引用时,反引号会变得麻烦/混乱。例如:
$ FOO=`echo "foo's"`
$ echo $FOO
foo's
用 替换反引号$()
会产生相同的输出,并且更易于阅读(需要辨别的不同角度的引号更少):
$ FOO=$(echo "foo's")
$ echo $FOO
foo's
此外,每个引号(单引号、双引号、反引号)在 shell 中都有不同的含义,因此使用 $ 有助于降低复杂性。而跟随您的开发人员会感谢您,因为他/她将更容易弄清楚您做了什么。