何时以及如何在Shell脚本中使用嵌套命令替换

时间:2019-04-11 15:57:03

标签: linux shell

我是Linux新手,想知道嵌套命令替换的工作原理以及何时在shell脚本中使用它们。

我已经尝试过以下示例列出当前目录的内容:

示例1:

content=$(ls -ltr pwd)

echo $content

错误:  pwd:不是文件或目录

以上操作均无效,我的期望是命令替换将像执行“ ls -ltr”一样执行“ pwd”命令。

示例2:

content=$(ls -ltr $(pwd))

echo $content

在这里,我们使用了嵌套命令替换。因此可以正常工作。

我想知道何时使用嵌套命令替换,它是否有效? 有人可以给我解释一下吗?

1 个答案:

答案 0 :(得分:0)

在bash中,$(cmd)将替换为cmd的标准输出,因此,如果在ls $(pwd)中运行/tmp,它将变成ls /tmp

第一个示例不起作用的原因是bash不知道您打算运行pwd并替换为它。最终执行了ls -ltr pwdls列出目录pwd的内容,该目录不存在。