zoukankan      html  css  js  c++  java
  • 如何将目录下的脚本一次性全部执行

    大家好,我是良许。

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

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

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

    1. run-parts

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

    $ run-parts option <directory-path>
    

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

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

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

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

    执行结果:

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

    $ 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学习路线图,于是我根据自己的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。无论你是面试还是自我提升,相信都会对你有帮助!目录如下:

    免费送给大家,只求大家金指给我点个赞!

    链接:https://pan.baidu.com/s/1_6uniaFV0rdMWIdMwgZjbg
    提取码:9pbc

    也希望有小伙伴能加入我,把这份电子书做得更完美!

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

    推荐阅读:

  • 相关阅读:
    归并排序(Merge Sort)
    AtCoder AGC035D Add and Remove (状压DP)
    AtCoder AGC034D Manhattan Max Matching (费用流)
    AtCoder AGC033F Adding Edges (图论)
    AtCoder AGC031F Walk on Graph (图论、数论)
    AtCoder AGC031E Snuke the Phantom Thief (费用流)
    AtCoder AGC029F Construction of a Tree (二分图匹配)
    AtCoder AGC029E Wandering TKHS
    AtCoder AGC039F Min Product Sum (容斥原理、组合计数、DP)
    AtCoder AGC035E Develop (DP、图论、计数)
  • 原文地址:https://www.cnblogs.com/yychuyu/p/12983328.html
Copyright © 2011-2022 走看看