У меня есть каталог с множеством скриптов для генерации фигур. Все сценарии соответствуют шаблону 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 '{}' ';'
Если сценарии не требуют параметров или не требуют вызова в определенном порядке, вы сможете достичь этого с помощью простого цикла
#!/bin/bash
for i in $SCRIPT_DIR/fig*-gen.sh
do
./"$i"
done
Предостережение:
чтобы это работало, fig*-gen.sh
файлы должны указывать интерпретатор через #!/bin/bash
строку. Если они этого не делают, вам нужно явно вызвать интерпретатор, заменив ./"$i"
что-то вродеbash ./"$i"
./"$"
как в вашем примере, файлы должны иметь разрешения на выполнение, в то время как при использованииbash ./"$i"
они не имеют.Вместо цикла for вы можете использовать find:
источник
Если вы хотите, чтобы они работали параллельно, и если у вас установлен GNU Parallel http: // www.gnu.org/software/parallel/, вы можете сделать это:
или даже это:
Посмотрите вступительное видео для GNU Parallel, чтобы узнать больше: http://www.youtube.com/watch?v=OpaiGYxkSuQ
источник