Shell命令循环输出文件的名称

时间:2015-04-27 16:58:08

标签: bash shell

我有一个C代码,我用它来提取文件并写入单独的文件,如exax0.txt,...,exax202.txt。要做到这一点,我使用

for i in $(seq 0 202); 
do echo $i | ./f.out exa-NO-hyp.bin exax${i}.txt <<< "${i}"
done

相反,我希望将输出文件命名为exax495.txt,exax535.txt,...,exax8545.txt。为此,我尝试了类似的事情:

for i in $(seq 0 202); 
do echo $i | ./f.out exa-NO-hyp.bin exax${(i*40+495)}.txt <<< "${i}"  
done

但它说,-bash: exax${i*40}.txt: bad substitution

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

您可以使用$((...))执行算术。

即。一个简单的用途是:

for i in {1..10}; do touch file$(($i+5)).txt ; done

或者在你的情况下:

for i in $(seq 0 202); do echo $i | ./f.out exa-NO-hyp.bin exax$(($i*40+495)).txt <<< "${i}"; done

另见: