||
【背景】
需要反复修改Fortran程序的一个输入文件中的某参数,自动进行多次计算,为此需要编写shell脚本实现批处理。输入文件的格式是1列、6行。
【实现举例】
#!/bin/bash
a="1.0"
b="1.5"
for ((i=0; i<=2; i++))
do
echo "$a" > infile
echo "$b" > infile
./prog
mv outfile outfile_"$i"
a=$(echo "$a + 1.0 * (i +1.0)" | bc)
done
【注释】
(1)echo >与echo >>间的区别
> 输出重定向(若当前目录下infile文档不存在,则创建之并添入a的数值;若infile文档存在,则用a之数值替换文档原先内容)
>> 输出追加重定向(当前目录中存在infile,b的数值添加到原先内容后面)
(2)执行读取infile的可执行程序prog,并在每次计算后将输出文件outfile的名字进行修改,可供后面比较。
(3)bc用于实现计算,当前采用的是小数计算模式。
【参考资料】
(1)“echo >”和“echo >>”的区别 - singeryoung - 博客园 (cnblogs.com)
(2)Shell——bc案例_martingpf的博客-CSDN博客
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-17 07:20
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社