У меня есть каталог с множеством скриптов для генерации фигур. Все сценарии соответствуют шаблону fig * -gen.sh

Я хотел бы иметь скрипт bash (с именем allfig-gen.sh) для вызова всех скриптов генерации фигур. Как я могу это сделать?

4 ответа4

2

внутренности bash:

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

через (GNU) найти:

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

Если вы хотите, чтобы они работали параллельно, и если у вас установлен 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

1

Если сценарии не требуют параметров или не требуют вызова в определенном порядке, вы сможете достичь этого с помощью простого цикла

#!/bin/bash

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

Предостережение: чтобы это работало, файлы fig*-gen.sh должны указывать интерпретатор через #!/bin/bash line. Если они этого не делают, вам нужно явно вызвать интерпретатор, заменив ./"$i" чем-то вроде bash ./"$i"

1

Вместо цикла for вы можете использовать find:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .