Shell-Script
如何在 shell 中進行子目錄操作?
例如,對 n 個排序的子目錄執行命令,其中 n 是輸入。或者如何在一系列子目錄上執行 for 循環,我可以將該範圍作為輸入?除瞭如何在這裡定義範圍之外,如下所示?
for d in ["sd1"-"sd2"] do ( cd "$d" && do stuff ) done
如果您有一個支持它的外殼,請使用大括號擴展:
for d in sd{1..2}; do ( cd "$d" && dostuff ) done
使用
zsh
,ksh93
oryash -o braceexpand
(但不是bash
), 你可以做n=4 for d in sd{1..$n}; do ( cd "$d" && dostuff ) done
相關問題:我可以在沒有
eval
的情況下在 {} 擴展中使用變數嗎?對此的一個變化是
for (( i=1; i<=n; ++i )); do str="sd$i" ( cd ... ) done
這是其他 shell
for
支持的 C 樣式循環bash
(儘管仍然是 POSIX 標準的擴展)。