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


9

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

所以我正在使用这样的语法:

VAR=`command 2>/dev/null`

但是,当在脚本外壳上查找信息时,我经常发现也可以通过使用以下语法来实现上述目的:

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

两者都对我有用(我在这两种情况下均收到了预期的结果),因此我想知道我是否仍可以互换使用两种形式,或者我是否必须坚持一种形式以确保与将来的发展保持一致?贝壳 ?



belacqua的链接提供了许多有关差异和用法的信息。由于它与Ubuntu问题无关,所以关闭它,而更多的是编程问题。我强烈建议您遵循上述链接。
Luis Alvarado 2014年

Answers:



3

$()尽可能使用美元符号。当您开始需要嵌套引用时,反引号会变得繁琐/混乱。例如:

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

用替换反引号将$()产生相同的输出,并且更易于阅读(更少的变角引号可以识别):

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

这样,每个引号(单引号,双引号,反引号)在shell中的含义都不同,因此使用$可以帮助消除一定程度的复杂性。跟随您的开发人员将感谢您,因为他/她将可以更轻松地了解您所做的事情。


反引号甚至不能在功能上嵌套。
2014年

@Bernhard我的示例显示了我对该声明的关注。
亚伦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.