[英]when and how to use nested command substitution in shell script
我是 linux 新手,想知道嵌套命令替換的工作原理以及何時在 shell 腳本中使用它們。
我嘗試了以下示例來列出當前目錄的內容:
示例 1:
content=$(ls -ltr pwd)
echo $content
錯誤:密碼:不是文件或目錄
以上不起作用,我的期望是命令替換會像執行“ls -ltr”一樣執行“pwd”命令。
例子2:
content=$(ls -ltr $(pwd))
echo $content
在這里,我們使用了嵌套命令替換。所以這是有效的。
我想知道何時使用嵌套命令替換並且它是否有效? 任何人都可以向我解釋一下嗎?
在 bash 中, $(cmd)
將替換為cmd
的標准輸出,因此如果您在/tmp
運行ls $(pwd)
它將變成ls /tmp
。
第一個示例不起作用的原因是因為 bash 不知道您的意圖是運行pwd
並將其替換。它最終執行的是ls -ltr pwd
並且ls
試圖列出目錄pwd
的內容,這不存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.