2015-08-30 86 views
0

我想在文本文件(numberlist.txt)中打印,使用bash,從000000到999999的所有數字,每行一個數字。例如:bash腳本語言使用循環打印數字列表

000000 
000001 
000002 

... 

999999 

這是我的代碼:(當我運行它沒有任何反應)

#!/bin/bash 
CONT=0 
MAX_NUM=1000000 
FILE_NAME=numberlist.txt 

#While counter CONT is lower than MAX_NUM (-lt, 「lower #than」) the loop is executed 
until [ $CONT -lt $MAX_NUM ]; do 
    printf "%000002d\n" $CONT > $FILE_NAME 
    #CONT= CONT + 1 
    let CONT+=1 
done 

我在做什麼錯?

+4

通過CONT ++和> $ FILE_NAME通過>> $ FILE_NAME更改「until」,by「while」,「%000002d」by「%06d」和CONT + = 1。 –

+0

@pasabaporaqui,似乎比我更好的回答給我 –

+1

@EricRenouf:我沒有測試過,可能會有更多的問題。如果沒有更多的問題,任何人都可以用「社區歸屬」來寫答案。 –

回答

1

而是打開和關閉文件一百萬次,這樣做只是一次:

#!/bin/bash 
CONT=0 
MAX_NUM=1000000 
FILE_NAME=numberlist.txt 

while [ $CONT -lt $MAX_NUM ]; do 
    printf "%06d\n" $CONT 
    #CONT= CONT + 1 
    let CONT++ 
done > $FILE_NAME 
+0

確實!去的路! –

+0

C風格的for循環會更簡單更優雅。 (for((cont = 0; cont <1000000; ++ cont)); do' ... – tripleee

0

通過重定向的輸出迴路代替的printf從pasaba por aqui轉換的意見作爲答案:

#!/bin/bash 
CONT=0 
MAX_NUM=1000000 
FILE_NAME=numberlist.txt 

#While counter CONT is lower than MAX_NUM (-lt, 「lower #than」) the loop is executed 
while [ $CONT -lt $MAX_NUM ]; do 
    printf "%06d\n" $CONT >>$FILE_NAME 
    #CONT= CONT + 1 
    let CONT++ 
done 
0

如果你使用bash版本4,至少你可以做簡單的

echo -en {000000..999999}'\n' > numberlist.txt 

不需要循環。 -en\n將把每個號碼放在一行上。