大家好,我是良旭。我们平时工作的时候,为了测试产品的一些功能,我们会写一系列的脚本,放在同一个目录下。在做测试的时候,我们通常会依次执行这些脚本,然后记录测试结果。这样做的缺点很明显,就是效率太低。如果剧本不多,你的“时间管理”能力强,那问题不大。但是如果脚本很多,那你可能会有一拳爆屏的冲动(别问我怎么知道的,要不是我同事拼命拉,我的屏可能已经爆好几次了).本文将介绍三种一次性执行一个目录下所有脚本的方式。1.run-parts首先推荐一个非常好用,但大家不是很熟悉的命令:run-parts。它的基本用法如下:$run-partsoption但是并不是目录下的所有脚本都会被执行,仍然会有一些命名要求。脚本名称只有满足以下条件才会执行:大写/小写、数字、下划线(_)、破折号(-)。为了选择符合条件的脚本,我们通常需要加上--regex选项。如果我们的目录下有这些脚本:由于脚本一般以.sh结尾,如果你的命名符合规则并且你想执行所有脚本,你可以这样做:$run-parts--regex'sh$'.执行结果:如果只想执行以s开头,sh结尾的脚本,可以组合下面的正则表达式:$run-parts--regex'^s.*sh$'.执行结果:当然,你可以根据自己的脚本情况,编写相应的正则表达式。为了防止误操作,在脚本真正执行之前,可以先看看会执行什么脚本。我们可以添加--list选项:$run-parts--list--regex'^s.*sh$'。执行结果:如结果所示,加上--list选项后,只会列出Executedscripts方便大家查看,并不会真正执行这些脚本。2.find不过run-parts这个命令还是比较少的,估计很多人都不知道这个命令,更不用说知道怎么用了。还有一种执行一个目录下所有脚本的方法就是使用find命令,大家比较熟悉。具体来说,我们可以使用find命令查找目标目录下的所有脚本,然后使用-exec选项执行找到的脚本。$find~/scripts-maxdepth1-typef-executable-name's*'-exec{}\;STAYHOMESTAYSAFE上面的命令指定只查找scripts/目录级别的脚本,但是你也可以去掉这个限制,可以搜索当前目录及其子目录下的所有脚本:$find-maxdepth1-typef-executable-name'*.sh'-exec{}\;3.for如果你的Shell水平不错,那么for循环也是不错的选择。比如你要执行目录下所有以s开头的脚本,可以这样写:$forfin~/scripts/s*;做[-x"$f"]&&[!-d"$f"]&&"$f";doneSTAYHOMESTAYSAFE如果你想执行目录下的所有脚本,你可以做一个小改动:$forfin~/scripts/*.sh;做[-x"$f"]&&[!-d"$f"]&&"$f";done公众号:好样的Linuxhelloworld!STAYHOMESTAYSAFE当然,如果你想执行其他脚本或者有其他需求,可以发挥你的想象力,编写相应的命令。最后,最近有很多朋友找我要一份Linux学习路线图,所以我结合自己的经验,利用业余时间熬夜一个月,整理了一本电子书。无论你是面试还是自我提升,相信都会对你有所帮助!目录如下:免费送给大家,只求大家给我点个赞!链接:https://pan.baidu.com/s/1_6un...提取码:9pbc也希望有小伙伴可以加入我的行列,把这本电子书做得更完美!获得?希望老铁们来个三连击,让更多人看到这篇文章。推荐阅读:干货|程序员和高级架构师免费发送工件的必备资源|支持搜索的资源网站