“result=$(ls -l)”和“result=`ls -l`”有什么区别?

3
我已经运行了这两个命令,它们似乎做的事情是相同的,这是真的吗?还是有一些我没有看到的情况发生了?
这两个命令似乎做同样的事情:
result=$(ls -l)   
result=`ls -l`
2个回答

4

1
好的,看起来我明智地使用了t=$(ls -l)。谢谢大家! - Mint
2
不错的链接,但我对他们将$()称为新语法的定义有疑问。它比反引号更新,但已经存在了很长时间。 - William Pursell

1

在命令替换下,Bash手册中指出:

当使用旧式的反引号形式时,转义字符保持其字面意义,除非其后跟随着 $、` 或 . 第一个没有被反斜杠转义的反引号会终止命令替代。当使用 $(command) 形式时,括号内所有字符都构成命令,不会有特殊处理。

命令替换可嵌套。使用反引号形式时,需要用反斜杠转义内部的反引号以实现嵌套。

以下是sh手动在线副本:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接