| 查看: 515 | 回复: 1 | ||
[求助]
Linux shell循环执行一个程序 已有1人参与
|
|
大家好 是这样的: 系统是centos, 命令行下执行一个计算程序,程序一开始会读一个输入文件infile。 想实现的功能: for i=0:1:50 修改输入文件infile中的的输出文件名,比如 "output_i.txt" 修改输入文件infile中的扫描参数,“angle = i” 执行一个文件名为calc的计算程序, "./calc" 等待执行完毕 end 恳请高手给我写一个shell文件,谢谢! |
» 猜你喜欢
基金申报
已经有6人回复
存款400万可以在学校里躺平吗
已经有6人回复
推荐一本书
已经有13人回复
拟解决的关键科学问题还要不要写
已经有5人回复
基金委咋了?2026年的指南还没有出来?
已经有9人回复
国自然申请面上模板最新2026版出了吗?
已经有17人回复
纳米粒子粒径的测量
已经有8人回复
疑惑?
已经有5人回复
计算机、0854电子信息(085401-058412)调剂
已经有5人回复
Materials Today Chemistry审稿周期
已经有5人回复
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











回复此楼