如何将目录下的脚本一次性所有执行

你们好,我是良许。程序员

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

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

本文就给你们介绍三种一次性执行目录下全部脚本的方法。架构

1. run-parts

首先推荐一个很实用,但你们不是很熟悉的命令:run-parts 。它的基本用法以下:学习

$ run-parts option <directory-path>复制代码

可是,并非目录下全部的脚本都会被执行,仍是会有一些命名要求的。脚本的名字知足如下条件才会被执行:大/小写、数字、下划线(_)、短杠线(-)。测试

为了能选出知足条件的脚本,咱们一般须要加上 --regex 选项。假如咱们的目录下有这些脚本:网站

因为脚本通常是以 .sh 结尾,因此若是你的命名都符合规则的话,想要执行全部脚本的话,能够这样操做:spa

$ run-parts --regex 'sh$' .复制代码

执行结果:code

若是你只想要执行以 s 开头,sh 结尾的脚本,能够结合以下正则表达式:cdn

$ run-parts --regex '^s.*sh$' .复制代码

执行结果:

固然了,你能够根据本身的脚本状况,写出对应的正则表达式。

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

$ run-parts --list --regex '^s.*sh$' .复制代码

执行结果:

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

2. find

可是,run-parts 这个命令仍是比较小众,估计不少人并不知道这个命令,更不用说知道怎么去使用了。另外一个执行目录下全部脚本的方法是使用 find 命令,这个你们会更熟悉一些。

具体来说,咱们可使用 find 命令来找到目标目录下全部的脚本,而后再使用 -exec 选项去执行找到的脚本。

$ find ~/scripts -maxdepth 1 -type f -executable -name 's*' -exec {} \;
STAY
HOME
STAY
SAFE复制代码

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

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

3. for

若是你 Shell 的水平不错的话,那么 for 循环也是一个不错的选择。好比你想执行目录下全部以 s 开头的脚本,能够这样写:

$ for f in ~/scripts/s* ; do [ -x "$f" ] && [ ! -d "$f" ] && "$f" ; done
STAY
HOME
STAY
SAFE复制代码

若是你想执行目录下全部的脚本,能够作一个小小的改动:

$ for f in ~/scripts/*.sh ; do [ -x "$f" ] && [ ! -d "$f" ] && "$f" ; done
公众号:良许Linux
hello world!
STAY
HOME
STAY
SAFE复制代码

固然了,若是你还想要执行其它脚本,或者有其它需求,能够发挥你的想象,写出对应的命令来。

最后,最近不少小伙伴找我要Linux学习路线图,因而我根据本身的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。不管你是面试仍是自我提高,相信都会对你有帮助!目录以下:

免费送给你们,只求你们金指给我点个赞!

连接:pan.baidu.com/s/1_6uniaFV… 提取码:9pbc

也但愿有小伙伴能加入我,把这份电子书作得更完美!

有收获?但愿老铁们来个三连击,给更多的人看到这篇文章

推荐阅读:

相关文章
相关标签/搜索