0 基础

Shell本质上就是将多个命令放于*.sh文件中批量运行。

如:新建一个test.sh文件,输入如下几条命令并保存(第一条命令利用同目录下makefile文件编译C++程序,第二条命令删除编译产生的中间文件*.o,第三至五条命令分别以参数1、2、3运行名为xxx的C++程序)

make
rm -rf *.o
./xxx 1
./xxx 2
./xxx 3

在命令行中运行:

sh test.sh

即等效于在命令行中按顺序执行上述五条命令,完成C++程序编译、中间文件清除与三次程序运行,且当上一条指令完成后才会执行下一条指令。

跑实验时常用for循环语句,下文列出了常见的几种sh文件写法举例,更完整的可参考https://www.cnblogs.com/EasonJim/p/8315939.html

1 变换参数运行同个程序

1.1 按顺序运行

当希望以不同参数运行名为xxx的C++程序,若.sh文件中包含的命令如下:

./xxx 1
./xxx 2
./xxx 3

则可等价于:

for ((i=1;i<=3;i++));
do  ./xxx $i ;
done

若参数非连续,如2、5、100,则可以写作:

for i in 2 5 100;
do  ./xxx $i ;
done

1.2 并行运行

一般而言,同个程序可以按不同参数并行运行,互不干扰。下方的例子通过添加"&"符号,可以同时以参数1、2、3并行地运行程序:

for ((i=1;i<=3;i++)); do
{ ./xxx $i ;
}&
done

2 遍历文件夹中所有输入文件

2.1 按顺序运行

如程序需要遍历datasets文件夹下的所有数据集文件,可以写作:

for filename in datasets/*; do
{./xxx $filename;
}
done

2.2 并行运行

类似地,也可以并行处理datasets文件夹下的所有数据集文件,如:

for filename in datasets/*; do
{./xxx $filename;
}&
done

3 防止程序意外终止

由于实验时程序有可能需要大量时间才能跑出结果,有可能因为网络问题或者连接工具关闭导致的服务器连接中断,进而导致实验中断。因此可以采用screen工具让实验程序在后台运行,即便中断与远程服务器的连接后,程序仍然保持运行。

具体可参考https://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html

Linux Shell 批量运行语句相关推荐

  1. linux批量修改压缩图片大小,linux shell批量压缩某个目录下图片大小

    linux shell批量压缩某个目录下图片大小 #!/bin/sh read -p "Input Path:" SPATH maxsize=$((1024*200)) FILEL ...

  2. linux批量重命名脚本,Mac / Linux Shell 批量重命名的方法总览

    Linux Shell 批量重命名的方法总览 0.用类似 GPRename 这样的图形软件进行批量重命名 1.删除所有的 .bak 后缀: rename 's/\.bak$//' *.bak 2.把 ...

  3. linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)...

    本文中的脚本适用范围: 1)检测某些IP地址是否被占用: 2)检测网络中某些设备是否存活: 3)在分配新的ip地址之前,批量检测环境中是否存在冲突的机器 以上检测基于ICMP Ping报文,要求所有的 ...

  4. linux shell if运行,bash – shell脚本执行检查是否已经在运行

    检查已经执行的进程的更简单的方法是pidof命令. if pidof -x "abc.sh" >/dev/null; then echo "Process alre ...

  5. linux shell编程if语句内判断参数详解【ZT】

                  shell 编程中使用到得if语句内判断参数 –b 当file存在并且是块文件时返回真 -c 当file存在并且是字符文件时返回真 -d 当pathname存在并且是一个目 ...

  6. Linux shell脚本 while语句

    while语句 ​ while循环用于不断执行一系列命令,也用于从输入文件中读取数据:命令通常为测试条件.其格式为: while expression do    - done 命令执行完毕,控制返回 ...

  7. linux批量下载数据,[转载]linux shell批量下载IGS或CORS网FTP数据

    最近用迅雷FTP探测器下载数据,下载好之后发现漏下了好多数据,所以使用linux wget命令来实现FTP数据批量下载 关于wget命令可以 用wget --help 查看帮助,简单说明一下: wge ...

  8. linux shell后台运行

    当用bash启动一个程序,你可以用在程序后加&,实现程序在后台运行: 例如: watch df -i & 但如果你忘了输入&:但你又不想把程序停止后重新启动: 你可以这么做: ...

  9. linux shell 批量清空,shell脚本批量删除docker镜像

    平时我们下载了很多镜像.但这些镜像已经很老了,我们需要把原来的镜像删除,但如果镜像很多的话,手动删除会特别麻烦,我们可以写个脚本批量删除 [root@server script]# cat docke ...

最新文章

  1. C++之queue模板类
  2. 万字长文了解模拟退火算法原理及求解复杂约束问题(源码实现)
  3. Actor生命周期理解
  4. 个推微服务网关架构实践
  5. 2020牛客国庆集训派对day8G-Shuffle Cards【Splay】
  6. 第十六节: EF的CodeFirst模式通过Fluent API修改默认协定
  7. 第十节: EF的三种追踪实体状态变化方式(DBEntityEntry、ChangeTracker、Local)
  8. 常用代码生成工具介绍
  9. C++设计模式-迭代器模式
  10. 20061008: IntelliJ Idea 6
  11. pymysql执行有参数的in语句
  12. unity3d用射线检测做了一个物体的捡起功能
  13. SqlParameter防SQL注入的方法
  14. 2022深圳杯D题思路:复杂水平井三维轨道设计
  15. stagefright概述
  16. 矩阵分析与应用-16-广义逆矩阵
  17. 2022icpc昆明打铁记录
  18. iOS - 选取相册中iCloud云上图片和视频的处理
  19. s开头wifi测试软件,应对5G WiFi 新一代无线测试的挑战
  20. 跳槽的新公司,我直接让项目的性能提升了一半

热门文章

  1. VN700+最新固件下载
  2. 王心凌男孩的力量有多恐怖?
  3. python美女源代码_【网站源码】吾赏美图源码,做自己的美女图站点,PHP+Python...
  4. GPT转MBR分区格式
  5. 最新芒果TV视频下载方法-马赛克视频助手
  6. 视频号运营攻略大全,视频号从0到1运营变现教程丨国仁网络资讯
  7. php–strace,关于strace
  8. vue数据成功渲染却报错显示数据undifined
  9. 视觉RLHF要来了?谷歌复用30年前经典算法,CV引入强化学习
  10. 金融科技大数据产品推荐: 换汇API/海外支付API——让跨境支付更简单