Command Substitution

命令替换 (Command substitution) 允许以命令的输出替换命令名。有 两种形式:

$(command)

还有

`command`

Bash 进行扩展的步骤是执行 command,以它的标准输出替换它,并且将所有后续的 新行符删除。内嵌的新行符不会删除,但是它们可能会在词的拆分中被删除。 命令替换 $(cat file) 可以用等价但是更快的方法 $(< file) 代替。

当使用旧式的反引号 ("`") 替换形式时,反斜杠只有其字面意义,除非 后面是 **$**, **, 或者是 **. 第一个前面没有反斜杠的反引号将结束命令替换。当使用 $(command) 形式时,括号中所有字符组成了整个命令;没有被特殊处理的字符。

命令替换可以嵌套。要在使用反引号形式时嵌套,可以用反斜杠来转义内层的 反引号。

如果替换发生在双引号之中,结果将不进行词的拆分和路径扩展。