1

У меня есть несколько сценариев Bash, или, вернее, один сценарий, который должен быть запущен несколько раз.

Этот скрипт принимает несколько аргументов командной строки и что-то с ними делает. Мне нужно запустить этот скрипт несколько раз подряд, передавая разные значения аргумента. Проблема в том, что этот скрипт очень длинный и требует много времени для запуска.

Я хочу запустить этот скрипт один раз, с некоторыми аргументами. Затем я хочу сразу же запустить этот скрипт, передав на этот раз разные значения аргументов.

Я должен дать свои законченные результаты моему боссу утром. Одним из решений было бы просто запустить сценарий один раз, а затем сидеть всю ночь за компьютером, ожидая его завершения, а затем запустить сценарий еще раз. Но недостаток сна не вариант для меня.

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

Возможно, было бы лучше взглянуть на это изображение, чтобы лучше понять мой вопрос.

Скриншот

3 ответа3

0

Вам нужен цикл for :

cd ~/Desktop/344/08
for arg in --resources --requesters --errors
do
    echo Starting: ./log_parse.sh "$arg" --day 10-20 --number 10 access_log_Jul95
    ./log_parse.sh "$arg" --day 10-20 --number 10 access_log_Jul95
done

Возможно, вы захотите сохранить копию вывода в лог-файл, а также отобразить его на экране:

cd ~/Desktop/344/08
{
    for arg in --resources --requesters --errors
    do
        echo Starting: ./log_parse.sh "$arg" --day 10-20 --number 10 access_log_Jul95
        ./log_parse.sh "$arg" --day 10-20 --number 10 access_log_Jul95
    done
} 2>&1 | tee output.log

Поместите приведенный выше код в файл, скажем, script.sh . Затем в командной строке выполните:

bash ./script.sh
0

Самый простой способ выполнить одну команду за другой - просто использовать; Подобно:

command1 --options;command2 --options;command3 --options

Если вы хотите пропустить выполнение команд, если предыдущая не удалась, вы можете сделать это с &&:

 command1 --options && command2 --options && command3 --options

В отличие от канала (|) или амперсанда (&), точка с запятой ожидает завершения команды до ее запуска.

0

Проверьте диспетчер задач (http://vicerveza.homeunix.net/~viric/soft/ts/) - есть пакеты для Debian.

По сути, вы можете установить его, а затем выполнить набор tsc {script} {arguments} и он будет помещать команду в очередь, над которой спулер работает в фоновом режиме.

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