Выполнение циклического сценария

Вместо переустановки предложите перезагрузиться с установочного носителя, установите gparted, если он еще не существует, и используйте Gparted для изменения размеров разделов, что упрощает и экономит время. Взгляните на эти скриншоты, чтобы увидеть, как выглядит gparted. Тем не менее, я бы дал Win7 50 ГБ или около того, поскольку он, скорее всего, понадобится больше, чем вы ожидаете.

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

2 ответа

Запустите их как:

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

Второй будет запущен, если первый будет успешным.

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

[ f2]

Запустить второй, только если первый не удался:

/path/to/script.sh || /path/to/script.sh

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

run_script () { /path/to/script.sh || run_script ;}
3
ответ дан 23 May 2018 в 11:29
  • 1
    Хорошее использование рекурсивного вызова в функции, +1 для этого, но убедитесь, что вы проверяете статус выхода, чтобы иметь точку остановки для рекурсии. См. Комментарии по вопросу – Sergiy Kolodyazhnyy 3 May 2016 в 16:56
  • 2
    @Serg отредактировал .... – heemayl 3 May 2016 в 16:57
  • 3
    Не будет ли неограниченная рекурсия причиной катастрофы в конечном итоге? – n0rd 3 May 2016 в 21:40
  • 4
    @ n0rd Он будет ждать завершения скрипта и основываться на статусе выхода (если false), тогда функция, означающая, что скрипт будет запущен, будет выполняться один процесс в заданное время, пока не будет достигнута глубина рекурсии. , Я не думаю, что это серьезная проблема ... – heemayl 3 May 2016 в 21:43
  • 5
    Как именно сбой интерпретатора (процесс bash, выполняющий сценарий, завершается) не является серьезной проблемой? Да, если script.sh занимает значительное время для выполнения, время для краха будет довольно длинным, но будет . Если бы bash сделал оптимизацию хвостовой рекурсии, это было бы действительно приятным использованием рекурсии, но это не так. – n0rd 3 May 2016 в 21:50

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

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

Вы можете остановить скрипт ctrl + c.

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

1
ответ дан 23 May 2018 в 11:29

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

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