簡體   English   中英

兩次Bash命令替換

[英]Twice Bash command substitution

我有目錄a1..a5b1..b5c1..c5 在每個目錄中,我都有兩個文件a1b1c1

do mkdir /tmp/{a,b}$d; touch /tmp/{a,b,c}$d/{a,b,c}1; done;

我想獲取以“ a”開頭的目錄中所有以“ a”或“ b”開頭的文件。 我可以這樣做:

DIRS=`ls -1 -d /tmp/{a,b}*/a*`
echo ${DIRS}

並獲得:

/ tmp / a1 / a1 / tmp / a2 / a1 / tmp / a3 / a1 / tmp / a4 / a1 / tmp / a5 / a1 / tmp / b1 / a1 / tmp / b2 / a1 / tmp / b3 / a1 / tmp / b4 / a1 / tmp / b5 / a1

現在,我將使用一個名為DATA的變量來存儲目錄並稍后獲取文件:

DATA="/tmp/{a,b}*"
echo ${DATA}
DIRS=`ls -1 -d ${DATA}/a*`
echo ${DIRS}

在輸出中,DATA內容正常( / tmp / {a,b} * ),但是出現以下錯誤:

ls:無法訪問/ tmp / {a,b} * / a *:無此類文件或目錄

知道為什么會這樣嗎?

我解決了問題,但是找不到關於我以前嘗試失敗的原因的任何參考。

DATA="/tmp/{a,b}*"
echo ${DATA}
DIRS=`eval "ls -1 -d ${DATA}/a*"`
echo ${DIRS}

輸出:

/ tmp / a1 / a1 / tmp / a2 / a1 / tmp / a3 / a1 / tmp / a4 / a1 / tmp / a5 / a1 / tmp / b1 / a1 / tmp / b2 / a1 / tmp / b3 / a1 / tmp / b4 / a1 / tmp / b5 / a1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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