当我们把一个命令放在美元符号和括号内时,在shell中是什么意思:$(command)
我只是想了解shell中的以下代码行。 它用于获取当前的工作目录。 我知道$(variable)名称返回variables名称内的值,但$(command)应该返回什么? 它执行命令后是否返回值? 在这种情况下,我们可以使用`来执行命令。 
 CWD="$(cd "$(dirname $0)"; pwd)" 
在不同版本的shell中,也可以从以下代码行获取相同的输出
 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 
 我无法理解$(cd..和$(dirname的含义。 
有谁能帮我弄清楚这个命令是如何执行的?
 像${HOME}这样的${HOME}用法给出了HOME的值。  $ like $(echo foo)意味着运行子shell中括号内的任何内容并将其作为值返回。 在我的例子中,你会得到foo因为echo会将foo写入标准输出 
 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 
 Could anybody help me to figure out how this command get executed? 
 让我们看看命令的不同部分。  BASH_SOURCE是一个包含源文件名的bash数组variables。 所以"${BASH_SOURCE[0]}"会返回你脚本文件的名字。 
  dirname是由GNU coreutils提供的一个实用程序,它从文件名中删除最后一个组件 。 因此,如果你通过说bash foo执行你的脚本, "$( dirname "${BASH_SOURCE[0]}" )"将返回.  。 如果你说bash ../foo ,它会返回.. ; 对于bash /some/path/foo它会返回/some/path 。 
 最后,整个命令"$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"获取包含被调用脚本的绝对目录。 
  $(...)允许命令replace,即允许命令的输出replace命令本身,并可以嵌套。