2016-12-10 4 views
3

Linux-новичок здесьВыполнить все скрипты в папке

У меня есть много .sh скриптов в одной папке, и хотели бы, чтобы запустить их один за другим. Один сценарий может выполняться как:

bash wget-some_long_number.sh -H 

Пусть мой каталог /dat/dat1/files

Как я могу запустить bash wget-some_long_number.sh -H один за другим?

Я понимаю, что-то в этих линии должны работать:

for i in *.sh;...do ....; done

Спасибо.

+0

jus t поместите команду после 'do', ваша переменная цикла будет именем файла без расширения. Очевидно, что в этом будет отсутствовать обработка ошибок. Что произойдет, если один из сценариев завершится неудачей? – karakfa

ответ

4

Попробуйте это:

for f in *.sh; do # or wget-*.sh instead of *.sh 
    bash "$f" -H || break # if needed 
done 

Это вы хотите запустить, например, x1.sh, x2.sh ..., x10.sh:

for i in `seq 1 10`; do 
    bash "x$i.sh" -H || break # if needed 
done 
+0

@ Кирриль вы можете объяснить, что делает 'break'? Я не хочу, чтобы работа прекращалась в любое время. Пропустите любой неудачный сценарий и перейдите к следующему. – code123

+0

'break' останавливает цикл. Просто опустите '|| break'. –

+0

Отлично! Спасибо @ Кирилл Булыгин – code123

6

есть гораздо более простой способ, вы можете использовать run-parts, который будет выполнять все сценарии в папке:

run-parts /path/to/folder 
Смежные вопросы