2014-03-27 67 views
1

我想寫一個bash腳本,它允許我使用遞增名稱自動創建多個目錄。用增量變量作爲目錄名稱的一部分使用Bash內的for循環創建目錄

例如,我試圖創建名爲v0v1,v1v2,...,v40v41的目錄。我試過使用'for'循環,其中我創建一個變量並將其設置爲等於i + 1的當前值(其中'i'是當前循環迭代),但它不起作用如預期。 我設法讓變量增加(並且使用'echo'來檢查這個變量),但我無法讓它變成新的目錄名稱的一部分。

我寫的代碼如下:

for i in {0..40}; do let r=$((i+1)); mkdir v$iv$r; done 

然而,所產生的目錄具有僅含有所述第一可變值(即V0,V1,...,V40),並且不包括名稱'v $ r'。

有沒有人有任何想法如何一次使用兩個變量在相同的文件名?

回答

0
for i in {0..40}; do let r=$((i+1)); mkdir v${i}v$r; done 

當bash看到表達v$iv$r,它可以代替在變量ivr。但是,當然沒有iv。所以bash用空字符串替代。解決方案是使用大括號來確保bash知道變量名稱結束的位置。因此:v${i}v$r

+0

非常感謝您的回覆,確切需要什麼。 – ck459

+0

對於這樣簡單的事情,我會跳過單獨的'r',只爲'{0..40}中的我;做mkdir v $ {i} v $((i + 1)); done' – jthill

1
printf 'r=%d ; mkdir v$((r-1))v${r} ;' $(seq 2 41) |sh 

根本不需要shell循環。

相關問題