的输出
# ls
Run Code Online (Sandbox Code Playgroud)
和
# echo $(ls)
Run Code Online (Sandbox Code Playgroud)
是相同的。$ 符号和括号究竟是什么意思?
另外,在技术层面上是什么导致这两个命令的输出相同?
这是 bash 的命令替换。
命令替换允许命令的输出替换命令本身。当一个命令被如下包围时,会发生命令替换:
Run Code Online (Sandbox Code Playgroud)$(command) or `command`
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/