запустить несколько скриптов - PullRequest
0 голосов
/ 13 января 2012

У меня есть несколько скриптов bash.например

script1_1.sh
script1_2.sh
script1_3.sh

и т. д.

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

for (i=0; i < 40; i++)
   ./script1_[i].sh

Я также хотел бы проверить, работает ли каждый скрипт, поэтому, если нет, он выйдет из цикла for.

if ./script[i] (command unsuccessful)
then break?

Может кто-нибудь помочь мне написатьэтот код?Я очень плохо знаком с языками сценариев.

Ответы [ 2 ]

3 голосов
/ 13 января 2012

Вы действительно готовы ответить на свой вопрос. Цикл for в стиле C отлично подойдет для вашего сценария, но если ваши сценарии имеют произвольные имена, вы можете использовать массив. Вы можете использовать ||, который будет выполнять правую сторону, если возвращается ненулевой статус выхода. Вы также можете использовать выражение if, как вы доказали в своем вопросе, с "!" между if в команде (если нет).

scripts=( script1_1.sh script1_2.sh script1_3.sh )

for script in "${scripts[@]}"; do
   ./"$script" || { echo "$script failed"; break; }
done

Использование цикла for, как в ваших вопросах:

for ((i=1;i<4;i++)); do
   ./script1_${i}.sh || { echo "$script failed"; break; }
done
0 голосов
/ 13 января 2012

Поскольку у вас есть этот вопрос, помеченный perl, вы также можете сделать это в однострочнике Perl:

perl -e 'foreach(1..40){system("sh script_" . $_ . ".sh")==0 or die $!;print "script_" . $_ . ".sh done\n";}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...