2017-07-06 125 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