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指令-yes

用途说明 yes命令用于重复输出字符串(output a string repeatedly until killed)。这个命令可以帮你自动回答命令行提示,例如,进入一个含有多个文件的目录,执...

linux多播C/S代码及执行程序

  • 2013年04月07日 17:28
  • 5KB
  • 下载

Linux命令执行程序shell

  • 2010年11月25日 22:47
  • 4KB
  • 下载

调用linux_shell、另一个可执行程序调用exec函数

exec作为Linux进程的控制原语,常用的调用方式是: 1. 调用fork()创建一个子进程 2在子进程中调用exec原语,使程序执行另一个程序或者一个Shell文件。 此时子进程的进程ID不变,只...

初学《Linux内核如何装载和启动一个可执行程序》

孙业毅 原创作品 转载请注明出处 《Linux内核分析》MOOC课程:http://mooc.study.163.com/course/USTC-1000029000 第六讲 进程的描述和进程的...
  • sunyeyi
  • sunyeyi
  • 2015年04月19日 22:26
  • 1323

Linux操作系统实验二:进程的创建与可执行程序的加载

SA*****210    *明 进程是计算机中已运行程序的实体。程序本身只是指令的集合,进程才是程序(那些指令)的真正运行。进程也是一个可以执行的程序指令集;和该进程相关联的全部数据(包括...

linux可执行程序如何在系统后台运行

我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开...
  • faihung
  • faihung
  • 2017年02月21日 22:37
  • 226

Linux 装载可执行程序过程的分析

内容说明 本次的内容,是一次 MOOC 课程的作业。具体的,是使用汇编对 Linux 系统调用部分进行模拟实现,从而更加直观的验证 Linux 系统的基本机制。 作业声明 qianyizhou...

Linux 可执行程序打压缩

对于设计嵌入式Linux系统的研发人员来说,有一个问题是必须要考虑到的,那就是存储器的空间。我们知道嵌入式Linux系统所用的存储器不是软磁盘、硬盘、ZIP盘、CD-ROM、DVD这些众所周知的大容量...
  • bbjjqq
  • bbjjqq
  • 2011年02月28日 17:18
  • 668

【已解决】可执行程序无法在Linux上运行,显示line 1: syntax error: word unexpected (expecting ")

今天遇到一件比较奇怪的事情,在主机上使用交叉编译器来生成开发板的可执行文件。编译时没有报错, 但是下载到开发板上的时候,执行的时候却报错了。而且报语法错误。真是生平之罕见啊。最后在网上 找...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux循环执行程序体验
举报原因:
原因补充:

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