如何将目录下的脚本一次性全部执行

系统 Linux
我们在平时工作的时候,为了测试产品的一些功能,我们会写一系列的脚本,并且把它们放在同一个目录下。本文就给大家介绍三种一次性执行目录下所有脚本的方法。

我们在平时工作的时候,为了测试产品的一些功能,我们会写一系列的脚本,并且把它们放在同一个目录下。在做测试的时候,我们通常会依次执行这些脚本,然后记录测试结果。

这样做的弊端是显而易见的,那就是效率太低。如果脚本数不多,你的「时间管理」能力又很强的话,那么问题不大。但如果脚本数很多,那么你很可能就有一拳打爆屏幕的冲动(别问我怎么知道,要不是我的同事拼死拉着,我的屏幕很可能已经爆了好几块了)。

[[327930]]

本文就给大家介绍三种一次性执行目录下所有脚本的方法。

1. run-parts

首先推荐一个很实用,但大家不是很熟悉的命令:run-parts 。它的基本用法如下:

  1. $ run-parts option <directory-path> 

但是,并不是目录下所有的脚本都会被执行,还是会有一些命名要求的。脚本的名字满足以下条件才会被执行:大/小写、数字、下划线(_)、短杠线(-)。

为了能选出满足条件的脚本,我们通常需要加上 --regex 选项。假如我们的目录下有这些脚本:

由于脚本一般是以 .sh 结尾,所以如果你的命名都符合规则的话,想要执行所有脚本的话,可以这样操作:

  1. $ run-parts --regex 'sh$' . 

执行结果:

如果你只想要执行以 s 开头,sh 结尾的脚本,可以结合如下正则表达式:

  1. $ run-parts --regex '^s.*sh$' . 

执行结果:

当然了,你可以根据自己的脚本情况,写出对应的正则表达式。

为了防止误操作,在脚本真正执行之前,可以先看下将被执行的脚本会有哪些。我们可以加上 --list 选项:

  1. $ run-parts --list --regex '^s.*sh$' . 

执行结果:

如结果所示,加上 --list 选项后,它只会列出将要执行的脚本,便于你的核对,并不会真正去执行这些脚本。

2. find

但是,run-parts 这个命令还是比较小众,估计很多人并不知道这个命令,更不用说知道怎么去使用了。另一个执行目录下所有脚本的方法是使用 find 命令,这个大家会更熟悉一些。

具体来讲,我们可以使用 find 命令来找到目标目录下所有的脚本,然后再使用 -exec 选项去执行找到的脚本。

  1. $ find ~/scripts -maxdepth 1 -type f -executable -name 's*' -exec {} \; 
  2. STAY 
  3. HOME 
  4. STAY 
  5. SAFE 

上面的命令是指定了只在 scripts/ 目录这个层级下找脚本,但是,你还可以去掉这个限制,就可以搜索当前目录及其子目录下所有的脚本了:

  1. $ find -maxdepth 1 -type f -executable -name '*.sh' -exec {} \; 

3. for

如果你 Shell 的水平不错的话,那么 for 循环也是一个不错的选择。比如你想执行目录下所有以 s开头的脚本,可以这样写:

  1. $ for f in ~/scripts/s* ; do [ -x "$f" ] && [ ! -d "$f" ] && "$f" ; done 
  2. STAY 
  3. HOME 
  4. STAY 
  5. SAFE 

如果你想执行目录下所有的脚本,可以做一个小小的改动:

  1. $ for f in ~/scripts/*.sh ; do [ -x "$f" ] && [ ! -d "$f" ] && "$f" ; done 
  2. 公众号:良许Linux 
  3. hello world! 
  4. STAY 
  5. HOME 
  6. STAY 
  7. SAFE 

当然了,如果你还想要执行其它脚本,或者有其它需求,可以发挥你的想象,写出对应的命令来。

本文授权转载自公众号「良许Linux」。良许,世界500强外企Linux开发工程师,公众号里分享大量Linux干货,欢迎关注!

 

责任编辑:赵宁宁 来源: 良许Linux
相关推荐

2023-09-26 07:11:15

KubernetesJob节点

2024-02-28 08:18:13

Java日志项目

2014-08-04 14:38:25

LinuxToken

2013-04-17 09:16:37

2011-04-18 13:36:42

2021-07-26 09:56:19

AI 数据人工智能

2019-08-06 09:21:45

2021-08-12 09:48:21

Webpack Loa工具Webpack

2024-04-03 09:00:10

2009-12-25 14:46:53

Windows 7文件关联

2010-11-24 16:32:50

2014-03-06 15:16:18

安全管理linux安全

2012-09-18 15:04:31

Office 2013微软

2019-11-11 10:20:10

Linux重命名命令

2015-04-09 09:08:20

2019-01-06 16:15:50

云计算SaaSIaaS

2011-05-17 10:04:18

Python

2012-02-01 16:48:54

后门Putty

2017-03-13 09:24:59

概念学习器学习字符

2020-11-02 13:44:56

CentOSK8SLinux
点赞
收藏

51CTO技术栈公众号