У меня есть каталог с множеством скриптов для генерации фигур. Все сценарии соответствуют шаблону fig * -gen.sh
Я хотел бы иметь скрипт bash (с именем allfig-gen.sh) для вызова всех скриптов генерации фигур. Как я могу это сделать?
внутренности bash:
for s in fig*-gen.sh; do
bash "$s";
done
через (GNU) найти:
find . -name "fig*-gen.sh" -exec bash '{}' ';'
Если вы хотите, чтобы они работали параллельно, и если у вас установлен 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
Если сценарии не требуют параметров или не требуют вызова в определенном порядке, вы сможете достичь этого с помощью простого цикла
#!/bin/bash
for i in $SCRIPT_DIR/fig*-gen.sh
do
./"$i"
done
Предостережение: чтобы это работало, файлы fig*-gen.sh
должны указывать интерпретатор через #!/bin/bash
line. Если они этого не делают, вам нужно явно вызвать интерпретатор, заменив ./"$i"
чем-то вроде bash ./"$i"
Вместо цикла for вы можете использовать find:
find $SCRIPT_DIR -type f -name "fig*-gen.sh" -exec {} \;