如何编写一个脚本来调用所有符合某个模式的其他脚本

如何编写一个脚本来调用所有符合某个模式的其他脚本

我有一个目录,里面有很多用于生成图形的脚本。所有脚本都符合模式 fig*-gen.sh

我想要一个 bash 脚本(名为 allfig-gen.sh)来调用所有图形生成脚本。我该怎么做?

答案1

bash 内部结构:

for s in fig*-gen.sh; do
    bash "$s";
done

通过(gnu)查找:

find . -name "fig*-gen.sh" -exec bash '{}' ';'

答案2

除非脚本需要参数或需要按特定顺序调用,否则你应该能够通过简单的循环来实现这一点

#!/bin/bash

for i in $SCRIPT_DIR/fig*-gen.sh
do
  ./"$i"
done

警告: 为了实现这一点,fig*-gen.sh文件应该通过以下行指定解释器#!/bin/bash。如果没有,你需要通过替换./"$i"以下内容来显式调用解释器:bash ./"$i"

答案3

除了 for 循环之外,您还可以使用 find:

find $SCRIPT_DIR -type f -name "fig*-gen.sh" -exec {} \;

答案4

如果您希望它们并行运行,并且安装了 GNU Parallel http://www.gnu.org/software/parallel/,您可以执行以下操作:

ls ./fig*-gen.sh | parallel

或者甚至是这样的:

parallel ::: ./fig*-gen.sh

观看 GNU Parallel 的介绍视频以了解更多信息: http://www.youtube.com/watch?v=OpaiGYxkSuQ

相关内容