簡體   English   中英

何時以及如何在 shell 腳本中使用嵌套命令替換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM