Linux循环执行程序体验

原创 2015年11月18日 11:50:36

实例

如题所示,下面为大家展示的是可用于执行的有效shell实例:

for line in `ls ../datas | grep -o "[0-9]*"`
do
        sed -i "10c variable\t\tfilename equal $line" inputfile
        mpiexec -n $NPROCS LAMMPS -in inputfile
done

其主要目的是为使用LAMMPS软件处理一批data文件,流程如下:
1、获取datas文件夹下的所有文件名中的数字;
2、修改LAMMPS的输入脚本,执行LAMMPS程序,并循环执行该步骤至处理完所有文件。

有人发现,所有代码片都是从网上搜得,那本博客还有什么意义呢?先别急,慢慢来。

运行平台

RHEL 6.3
mpiexec: mpich2
LAMMPS: 一个经典的大规模并行模拟软件,它很复杂,还需要一个输入脚本,知道这就行了

P.S.
1、grep 的 -o 选项表示只显示匹配内容(搜了很多关于grep的介绍,里面没有),不信你可以试试:

$grep --help
Output control:
  -o, --only-matching       show only the part of a line matching PATTERN

2、代码中的 “单引号”—— ` 符号,是键盘左上角esc键下面的那个~

重点——为什么要用开头的那段代码

原因:找了很多,就它能顺利执行。
那么不能顺利执行的循环代码有哪些呢:

ls ../datas | grep -o "[0-9]*" > tmp.name
while read line
do
        sed -i "10c variable\t\tfilename equal $line" inputfile
        mpiexec -n $NPROCS LAMMPS -in inputfile
done < tmp.name

或者

ls ../datas | grep -o "[0-9]*" > tmp.name
cat tmp.name | while read line
do
        sed -i "10c variable\t\tfilename equal $line" inputfile
        mpiexec -n $NPROCS LAMMPS -in inputfile
done

其实他们差不多,因为这两个都是while循环。至于不能顺利循环的原因,我并不知道,但是我知道,执行的结果是:LAMMPS程序只执行了一次,然后循环就终止了。

相信也有人看过类似的while循环,它们可以顺利执行,比如:

ls ../datas | grep -o "[0-9]*" > tmp.name
while read line
do
        echo $line
        line2line=`expr $line + 1`
        echo $line2line
done < tmp.name

这段代码与上面的代码唯一的区别是没有调用任何其他的程序,仅仅是做了个加法。
讨论到此结束,因为我知道仅仅是网上搜到的内容,然后尝试了一下而已。

结论

想要在循环中使用复杂的程序,还是用for循环吧。

Linux命令行,循环执行shell命令

Linux命令行,循环执行shell命令 死循环方式如下:命令格式为 while : ;do ; done; 可以将command替换为任意命令。...
  • daoshuti
  • daoshuti
  • 2017年06月01日 14:55
  • 4196

Linux:shell脚本反复运行同一个程序

描述:写了一个检测脚本 运行ffmpeg程序  当程序运行结束后 继续运行该ffmpeg程序。     思路:起初想要持续检测正在运行的进程,如果进程正在进行就什么也不做,该进程结束就重启该进程。写的...
  • cfqcfqcfqcfqcfq
  • cfqcfqcfqcfqcfq
  • 2017年02月13日 10:52
  • 1040

Linux循环执行程序体验

Linux循环执行程序体验如题所示,下面为大家展示的是可用于执行的有效shell实例:for line in `ls ../datas | grep -o "[0-9]*"` do s...
  • singshell
  • singshell
  • 2015年11月18日 11:50
  • 281

Linux/shell命令的实际应用——while;do;循环执行脚本

实验、测试、问题定位过程中,经常需要重复执行同一脚本,最简单的方式无非是: “↑ + Enter”;“↑ + Enter”;“↑ + Enter”;“↑ + Enter”;“↑ + Ente...
  • PirateLeo
  • PirateLeo
  • 2012年11月01日 22:27
  • 25387

Linux 命令行循环执行程序

经常在执行程序的时候希望传递不同的参数来测试,而这些参数就是某个目录里的所有文件,那么完全可以使用一些简单的bash命令来循环执行。比方说如下,我们就简单的写一个循环输出所有文件名的指令吧。for f...
  • u011021773
  • u011021773
  • 2018年02月10日 16:55
  • 8

循环再体验

文件名称:循环输出三角形 作者:邓哲 时间:2016年11月25日08:31:11 #include int main() { int i,j,n; scanf("%d",&n); ...
  • TP1624087632
  • TP1624087632
  • 2016年11月25日 08:32
  • 130

Linux下如何结束一个应用程序(比如死循环的程序)?两种方法介绍给大家

在Linux下,有两种方法可以结束应用程序 第一种方法:Ctrl+Alt+Esc,这时鼠标指针会变成一个小骷髅,用这个小骷髅去点击停止 相应的应用程序窗口,这个应用程序就会被相应的停掉。 第二种方法:...
  • yanghui_allen
  • yanghui_allen
  • 2013年07月16日 21:24
  • 6865

Linux操作系统下的死循环程序响应

可能是对UNIX编程知识掌握不够,以前碰到死循环程序时,对于系统在此处的执行情况并不是很了解,通过请教自己的导师后,我才对任何一个程序的执行流程有了一定的认识。 1.死循环就是死循环,CPU在执行该...
  • Frank_me
  • Frank_me
  • 2015年07月30日 18:18
  • 848

让一直用windows的你真正体验Linux

让一直用windows的你真正体验Linux 本文是为自小就使用windows环境,被微软哲学“耳濡目染"的你与过去的我而写。 相信很多人也是十多年都在windows下面成长而来,对于操作系统,太多...
  • ChristopherWu
  • ChristopherWu
  • 2015年01月10日 10:09
  • 1563

推荐一个免费体验Linux/Solaris系统的网站:Unxi体验中心 http://www.unix-center.net/

        最近正在研究将Windows程序移植到Linux、Solaris等32/64位Unix类操作系统下的各种问题,苦于没有硬件环境,而虚拟机又不太方便(而且64位操作系统也需要相应的CPU...
  • jackjoy
  • jackjoy
  • 2007年10月25日 19:33
  • 1964
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux循环执行程序体验
举报原因:
原因补充:

(最多只允许输入30个字)