[英]Twice Bash command substitution
我有目錄a1..a5 , b1..b5和c1..c5 。 在每個目錄中,我都有兩個文件a1 , b1和c1 。
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.