括号和 $ 符号在 echo $(ls) 中是什么意思

use*_*637 8 command-line bash

的输出

# ls
Run Code Online (Sandbox Code Playgroud)

# echo $(ls)
Run Code Online (Sandbox Code Playgroud)

是相同的。$ 符号和括号究竟是什么意思?

另外,在技术层面上是什么导致这两个命令的输出相同?

hea*_*gic 7

这是 bash 的命令替换。

命令替换允许命令的输出替换命令本身。当一个命令被如下包围时,会发生命令替换:

 $(command) or

 `command`
Run Code Online (Sandbox Code Playgroud)

http://www.gnu.org/software/bash/manual/bashref.html#Command-Substitution

更多的:

http://tldp.org/LDP/abs/html/commandsub.html

http://wiki.bash-hackers.org/syntax/expansion/cmdsubst

和你的问题类似的一个很好的例子:

http://bashshell.net/shell-scripts/using-command-substitution-in-a-bash-shell-script/