Сценарий конца и перезапуск это с теми же опциями и аргументами

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

Дополнительная информация: В части моего сценария это проверяется, если сервер работает. Если это не, это запускается etherwake. Это - часть, где я хочу, чтобы сценарий был закончен и перезапущен, пока сервер не наконец. Игнорирование проблемы, которую это легко может привести к бесконечному циклу, который мог бы угрожать системе/сетевой стабильности.

Существует ли более легкий/более безопасный путь? Кажется, нет команды GOTO LINE или чего-то подобного.

0
задан 26 August 2014 в 14:29

2 ответа

Просто сделайте бесконечный цикл с условием продолжения:

#!/bin/sh

, в то время как [TRUE]; сделайте

check_server_status 10.0..
etherwake ff:ff..

сделанный

2
ответ дан 7 October 2019 в 05:03

Как насчет

while server-is-not-running; do
    try-and-start-server
    sleep seconds-to-wait
done

где

  • server-is-not-running Ваш текущий тест должен видеть, работает ли сервер, т.е. функция оболочки или внешняя команда, возвращающаяся ненулевой, если сервер работает (альтернативно, ! server-is-running если та функция или команда возвращают нуль, если сервер работает).
  • try-and-start-server команда должна запустить сервер, который снова может быть функцией оболочки или внешней командой
  • seconds-to-wait разумное число секунд для ожидания успешного запуска

Для ограничения количества попыток замените while с a for:

for i in {1..number-of-attempts}; do
    try-and-start-server
    sleep seconds-to-wait
    server-is-not-running || break
done
1
ответ дан 7 October 2019 в 05:03

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

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