我是Linux新手,想知道嵌套命令替换的工作原理以及何时在Shell脚本中使用它们。
我已经尝试过以下示例列出当前目录的内容:
范例1:
content=$(ls -ltr pwd)
echo $content
错误:
pwd:不是文件或目录
上面没有用,我期望命令替换将像执行“ ls -ltr”一样执行“ pwd”命令。
范例2:
content=$(ls -ltr $(pwd))
echo $content
这里我们使用了嵌套命令替换。
我想知道何时使用嵌套命令替换,它是否有效?
有人可以向我解释吗?
最佳答案
在bash中,$(cmd)
将替换为cmd
的标准输出,因此,如果在ls $(pwd)
中运行/tmp
,它将变为ls /tmp
。
第一个示例不起作用的原因是bash不知道您打算运行pwd
并替换为它。最终执行的是ls -ltr pwd
,而ls
试图列出目录,不存在。
关于linux - 何时以及如何在Shell脚本中使用嵌套命令替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55636675/