2010-10-24 119 views
3

我有以下的bash腳本行Linux下:如何在bash腳本中循環?

... 
mkdir max15 
mkdir max14 
mkdir max13 
mkdir max12 
mkdir max11 
mkdir max10 
... 

是怎樣的語法將它們放在一個循環,這樣我就不用寫數字(15,14 ...)?

回答

4
for a in `seq 10 15`; do mkdir max${a}; done 

seq將產生數從1015

編輯:多年以來我就習慣了這種結構。但是,當我觀察其他答案時,確實如此,{START..STOP}好得多。現在我必須習慣以更好的方式創建目錄:mkdir max{10..15}

+0

請注意,只適用於bash。 – enzotib 2010-10-24 10:37:36

1
for i in {1..15} ; do 
    mkdir max$i 
done 
+2

如果要將值1..9填充爲0,則在bash4中使用{00..15} – pepoluan 2011-03-08 10:48:36

14

用bash,不需要使用外部命令如seq來生成數字。

for i in {15..10} 
do 
mkdir "max${i}" 
done 

或者乾脆

mkdir max{01..15} #from 1 to 15 

mkdir max{10..15} #from 10 to 15 

說,如果你的號碼是動態生成的,你可以使用C風格的for循環

start=10 
end=15 
for((i=$start;i<=$end;i++)) 
do 
    mkdir "max${i}" 
done 
6

沒有循環需要完成這個任務:

mkdir max{15..10} max0{9..0} 

...但如果你需要一個循環常量構作,您可以使用一個:

for i in $(seq [ <start> [ <step> ]] <stop>) ; do 
    # you can use $i here 
done 

for i in {<start>..<stop>} ; do 
    # you can use $i here 
done 

for ((i=<start> ; i < stop ; i++)) ; do 
    # you can use $i here 
done 

seq [ <start> [ <step> ]] <stop> | while read $i ; do 
    # you can use $i here 
done 

請注意,最後一個不會保留的價值$ i,因爲|啓動一個子shell