我是Linux新手,想知道嵌套命令替换的工作原理以及何时在shell脚本中使用它们。
我已经尝试过以下示例列出当前目录的内容:
示例1:
content=$(ls -ltr pwd)
echo $content
错误: pwd:不是文件或目录
以上操作均无效,我的期望是命令替换将像执行“ ls -ltr”一样执行“ pwd”命令。
示例2:
content=$(ls -ltr $(pwd))
echo $content
在这里,我们使用了嵌套命令替换。因此可以正常工作。
我想知道何时使用嵌套命令替换,它是否有效? 有人可以给我解释一下吗?
答案 0 :(得分:0)
在bash中,$(cmd)
将替换为cmd
的标准输出,因此,如果在ls $(pwd)
中运行/tmp
,它将变成ls /tmp
。
第一个示例不起作用的原因是bash不知道您打算运行pwd
并替换为它。最终执行了ls -ltr pwd
和ls
列出目录pwd
的内容,该目录不存在。