| 查看: 501 | 回复: 1 | ||
[求助]
Linux shell循环执行一个程序已有1人参与
|
|
大家好 是这样的: 系统是centos, 命令行下执行一个计算程序,程序一开始会读一个输入文件infile。 想实现的功能: for i=0:1:50 修改输入文件infile中的的输出文件名,比如 "output_i.txt" 修改输入文件infile中的扫描参数,“angle = i” 执行一个文件名为calc的计算程序, "./calc" 等待执行完毕 end 恳请高手给我写一个shell文件,谢谢! |
» 猜你喜欢
导师想让我从独立一作变成了共一第一
已经有9人回复
博士读完未来一定会好吗
已经有23人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有11人回复
读博
已经有4人回复
JMPT 期刊投稿流程
已经有4人回复
心脉受损
已经有5人回复
Springer期刊投稿求助
已经有4人回复
小论文投稿
已经有3人回复
申请2026年博士
已经有6人回复
zzy滴号
金虫 (小有名气)
- 应助: 18 (小学生)
- 金币: 5449.9
- 散金: 367
- 红花: 1
- 帖子: 282
- 在线: 895.6小时
- 虫号: 1540568
- 注册: 2011-12-17
- 性别: GG
- 专业: 理论和计算化学
【答案】应助回帖
|
因为楼主你没给出数据文件的确切格式,所以我假设文本第一行为"output_i.txt",第二行为“angle = i”。shell如下: #!/bin/sh #常量定义 INPUTFILE="./a.dat" START=0 LAST=10 OUTPUTFILEPRE="output_" OUTPUTFILEEND=".txt" ANGLE="angle=" OUTERPROGRAMPATH="./calc.sh" #测试数据文件是否存在且非空时 if [ ! -s $INPUTFILE ]; then echo "The file isn't exist or empty!" exit -1 fi #测试外部运行程序是否存在 if [ ! -x $OUTERPROGRAMPATH ]; then echo "The outer excute file isn't exist or error!" exit -1 fi #测试行数是否符合要求 lineNum=`sed -n '$=' $INPUTFILE` if [ $lineNum -le 2 ]; then echo "The file has too little contens" exit -1 fi for index in $(seq $START $LAST) do #拼出当前的输出文件 curOutFile=$OUTPUTFILEPRE$index$OUTPUTFILEEND #拼出当前的参数 curAngle=$ANGLE$index #将上两个参数进行替换 sed -i 1c\ $curOutFile $INPUTFILE sed -i 2c\ $curAngle $INPUTFILE #执行定义的外部程序 $OUTERPROGRAMPATH done |

2楼2015-09-20 16:51:05













回复此楼