Shell-Script

如何在 shell 中進行子目錄操作?

  • September 21, 2017

例如,對 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, ksh93or yash -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

這是其他 shellfor支持的 C 樣式循環bash(儘管仍然是 POSIX 標準的擴展)。

引用自:https://unix.stackexchange.com/questions/387819