Циклическое выполнение скрипта

Как сделать циклическое выполнение скрипта? В конце скрипта мне нужно запустить его снова. Cron не подходит, потому что мне нужно запустить скрипт сразу после предыдущего

2
задан 3 May 2016 в 16:31

3 ответа

Чтобы заставить Ваш сценарий выполниться снова и снова, можно сделать это как это (удостоверьтесь, что th сценарий имеет chmod 755 набор):

#!/bin/bash
echo "test" #or whatever you do in your script
exec sh <scriptname>

можно остановить сценарий ctrl + c .

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

0
ответ дан 4 May 2016 в 02:31
  • 1
    Вы - серьезно бог среди мужчин. Никакой терминальный ответ горячей клавиши CTRL+ALT+T. Никакие аудиоустройства за исключением удаленного рабочего стола Chrome ' sink'. и это просило дублирующийся пароль брелока для ключей на каждом входе в систему. Я как раз собирался переустановить человечность с нуля, которая берет меня спустя часы после конфигурирования всего и приложений переустановки и клонирования кода repos. Спасибо так себе так за сохранение меня от необходимости пройти всю ту проблему от всего сердца. Я понятия не имел, что было неправильным с Ubuntu, но я знал, что это была серьезная проблема конфигурации что я wouldn' t быть в состоянии лично разобраться. – anon58192932 2 January 2019 в 09:52

Базовая управляющая структура в любом виде языка программирования, который требует неопределенного цикличного выполнения, while цикл.

while true ; do /path/to/script.sh ; if [ $? -ne 0    ] ; then continue ; else break ; fi ; done
[еще 119] читаемое форматирование было бы:

while true 
do 
   /path/to/script.sh  # Ensure your script actually outputs exit status
   if [ $? -ne 0    ] ; then  
      continue  # if exit status not 0 ( not success ) , repeat
   else         
       break    # if successful - exit
   fi 
done

, Конечно, необходимо удостовериться, что сценарий на самом деле имеет статус возврата, который равняется 0 на успехе. Вы можете или не можете хотеть использовать полный путь, или ./ оператор для запущения скрипта в текущем каталоге, или указывать интерпретатор такой как python /my/python/script.py

При необходимости можно добавить задержку, прежде чем следующее повторение запустится. Чтобы сделать это, можно поместить sleep 0.250 прямо после fi, но прежде done

0
ответ дан 4 May 2016 в 02:31
  • 1
    Этот парень является жизненным средством сохранения. – Dennis 23 November 2018 в 19:48

Выполните их как:

/path/to/script.sh && /path/to/script.sh

второй будет работать, если первый успешно выполнится.

Без в зависимости от успеха первого:

/path/to/script.sh; /path/to/script.sh

Прибегают вторыми тот, только если первый перестал работать:

/path/to/script.sh || /path/to/script.sh
<час>

Для реального циклического выполнения, можно использовать рекурсивную функцию:

run_script () { /path/to/script.sh || run_script ;}
0
ответ дан 4 May 2016 в 02:31
  • 1
    Я стал очень раздраженным, когда мой gome-терминал не будет больше запускаться и не заметил звуковые проблемы. Ваш комментарий по другим затрагиваемым Приложениям Gnome был полезен! – alexurba 2 December 2018 в 02:13

Другие вопросы по тегам:

Похожие вопросы: