$()
命令替换(command substitution)是接受一个命令的输出,并将它插入到另一个命令中,好像你直接手工输入这一输出的内容一样。用$()将最初运行的命令括起来(这个命令将产生要被插入的输出内容)。通过下面的例子可以说得更明白些。
假设你刚参加完一个家庭聚餐,将你的数码相机连到Linux计算机,把新照片复制出来,把它们放到一个以当天日期来命名的文件夹中。
$ pwd
/home/scott/photos/family
$ ls -1F
2005-11-01/
2005-11-09/
2005-11-15/
$ date “+%Y-%m-%d”
2005-11-24
$ mkdir $(date “+%Y-%m-%d”)
$ ls -1F
2005-11-01/
2005-11-09/
2005-11-15/
2005-11-24/
?
在这个例子中,首先运行的是date "+%Y-%m-%d",然后mkdir用这个命令的输出(2005-11-24)来作为新目录的名称。这是个强大的功能,当你阅读其他人编写的shell脚本时(Web上很容易找到这些脚本),会发现到处都在用命令替换。