2017-07-06 108 views
0

我用我的當前腳本如何迭代變量?

for x in {07..10} 

下試圖傳遞起點,終點變量腳本使用

for x in $(seq $1 $2) 

由於序列從07開始,07是一個文件名我想讀,我不能將變量更改爲7,因爲它發生在使用序列時。你能否指點我正確的方向,因爲我沒有太多的bash經驗。

+0

感謝您的鏈接,我認爲這與我的問題相關 – Sushant

回答

0

使用printf得到的數字格式,你想:

for ((x=7; x<=10; x++)); do 
    str=$(printf "%02d" "$x") 
    echo filename${str}.txt 
done 

結果是這樣的:

$ for ((x=7; x<=10; x++)); do str=$(printf "%02d" "$x"); echo filename${str}.txt; done 
filename07.txt 
filename08.txt 
filename09.txt 
filename10.txt 

適用於變量,太:

$ start="07" 
$ end="10" 
$ for ((x=$start; x<=$end; x++)); do str=$(printf "%02d" "$x"); echo filename${str}.txt; done 
filename07.txt 
filename08.txt 
filename09.txt 
filename10.txt 
+1

使用'printf -v str'%02d「」$ x「'保存一個分支。 – chepner

+0

我有一臺洗碗機,所以我不介意在這裏和那裏使用額外的叉子。 – Jack

+0

在您自己的代碼中怠慢是可以理解的,但是如果沒有任何跡象表明OP希望解決方案效率稍低,那麼您應該盡最大努力避免循環中出現不必要的開銷。 – tripleee