使用Bash脚本以某种方式命名文件

使用Bash脚本以某种方式命名文件,bash,Bash,我正在为多个种子值运行一个遗传算法,每次运行我都想将种子值放在输出文件的名称中。我已经能够使用下面的Bash脚本实现这一点 1 #!/bin/bash 2 # Multi-seed script 3 4 seed=0.01 5 for count in {1..100..1} 6 do echo "$seed" 7 ./nsga2r $seed < input_data/truss.in 8 $(mv all_pop.out all_pop_

我正在为多个种子值运行一个遗传算法,每次运行我都想将种子值放在输出文件的名称中。我已经能够使用下面的Bash脚本实现这一点

  1 #!/bin/bash
  2 # Multi-seed script
  3 
  4 seed=0.01
  5 for count in {1..100..1} 
  6   do echo "$seed"
  7   ./nsga2r $seed < input_data/truss.in
  8   $(mv all_pop.out all_pop_seed"$count".out)
  9   seed=$(echo "$seed+0.01" | bc)
 10 done
但是我该怎么称呼他们呢

all_pop_seed001.out
all_pop_seed002.out
all_pop_seed003.out
... 
all_pop_seed010.out
all_pop_seed011.out
...
all_pop_seed099.out
all_pop_seed100.out

虽然这与我所需的输出文件名之间的细微差异不会妨碍我进一步的分析,但我还是想知道。

使用
printf
格式化文件名。此外,执行
mv
命令不需要命令替换

#!/bin/bash
# Multi-seed script

seed=0.01
for count in {1..100..1} ; do
  echo "$seed"
  ./nsga2r $seed < input_data/truss.in
  printf -v fname "all_pop_seed%03d.out" "$count"
  mv all_pop.out "$fname"
  seed=$(echo "$seed+0.01" | bc)
done
#/bin/bash
#多种子脚本
种子=0.01
对于{1..100..1}中的计数;做
回声“$seed”
./nsga2r$seed
请参见

将生产099
例如

所以您希望能够将
3
格式化为
003
。你知道如何用一行字来表达这个问题吗?将问题简化为最小形式。
#!/bin/bash
# Multi-seed script

seed=0.01
for count in {1..100..1} ; do
  echo "$seed"
  ./nsga2r $seed < input_data/truss.in
  printf -v fname "all_pop_seed%03d.out" "$count"
  mv all_pop.out "$fname"
  seed=$(echo "$seed+0.01" | bc)
done
printf "%03d" 99