24小时热门版块排行榜    

CyRhmU.jpeg
查看: 501  |  回复: 1

optk

新虫 (小有名气)

[求助] Linux shell循环执行一个程序已有1人参与

大家好
是这样的:
系统是centos, 命令行下执行一个计算程序,程序一开始会读一个输入文件infile。
想实现的功能:
for i=0:1:50
   修改输入文件infile中的的输出文件名,比如 "output_i.txt"
   修改输入文件infile中的扫描参数,“angle = i”
   执行一个文件名为calc的计算程序,   "./calc"
   等待执行完毕
end

恳请高手给我写一个shell文件,谢谢!
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzy滴号

金虫 (小有名气)

【答案】应助回帖

因为楼主你没给出数据文件的确切格式,所以我假设文本第一行为"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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 optk 的主题更新
信息提示
请填处理意见