-1

执行这样的命令有什么区别:

var=$(ls -alh /dir)

并这样做:

var=`ls -alh /dir`

一种方法可以用于更多的口译员吗?

4

1 回答 1

2

他们都command substitution

第 3.5.4 节http://www.gnu.org/software/bash/manual/bashref.html

Bash 通过执行命令并用命令的标准输出替换命令替换来执行扩展,并删除任何尾随的换行符。嵌入的换行符不会被删除,但它们可能会在分词过程中被删除。命令替换 $(cat file) 可以替换为等效但更快的 $(< file)。

当使用旧式反引号形式的替换时,反斜杠保留其字面含义,除非后面跟着“$”、“`”或“\”。前面没有反斜杠的第一个反引号终止命令替换。使用 $(command) 形式时,括号之间的所有字符组成命令;没有人受到特殊对待。

命令替换可能是嵌套的。要在使用反引号形式时嵌套,请使用反斜杠转义内部反引号。

如果替换出现在双引号内,则不会对结果执行分词和文件名扩展。

于 2013-05-24T12:46:24.120 回答