我有一个目录,里面有很多用于生成图形的脚本。所有脚本都符合模式 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