2011-04-07 72 views
7

我有一組循環的記錄。數字範圍從0000001到0089543,生病的是UIDX。如何在Bash中增加零填充int

,如果我嘗試類似:

for ((i=0; i< 0089543; i++)); do 
    ((UIDX++)) 
done 

計數器加1,2,3,4,而不是到0000001,0000002 ......我需要。

填充這些前導零的最佳方法是什麼?

+1

在任何語言中,數字和數字顯示都是不同的問題。 '000001'只是格式選擇。 – JimB 2011-04-07 16:38:23

回答

11

使用printf命令到數字與前導零的格式,如:

for ((i = 0; i < 99; ++i)); do printf -v num '%07d' $i; echo $num; done 

man bash

的printf [-v VAR]格式[參數]
寫的格式化參數到格式控制下的標準輸出。 -v選項會將輸出分配給變量var,而不是打印到標準輸出。

+0

+1,也很有用。 – 0xC0000022L 2011-04-07 16:42:45

2

你可以使用序列命令,非常有用的在您的情況

seq -w 0089543 

根據您的需要刪除第一個和最後一個數字,比如,如果你需要到達0089542然後命令使用是

seq -w 0089542 
+0

+1,謝謝。到目前爲止,我總是使用字符串連接來實現效果。 – 0xC0000022L 2011-04-07 16:42:14

3

猛砸4有一個很好的方法來解決這個問題:

for i in {0000000..0089543}; do 
    echo $i 
done