Как разрешить пользователю исправлять ошибку при выполнении пакета задач через скрипт bash? - PullRequest
0 голосов
/ 03 февраля 2020

Я хочу автоматизировать кучу задач Task_1, Task_2, Task_3, Task_4, Task_5 -

status = Task_1
if (status == FALSE)
   *give option for user to rectify the problem, once done, proceed to Task_2*
status = Task_2
if (status == FALSE)
   *give option for user to rectify the problem, once done, proceed to Task_3*
status = Task_3
if (status == FALSE)
   *give option for user to rectify the problem, once done, proceed to Task_4*
status = Task_4
if (status == FALSE)
   *give option for user to rectify the problem, once done, proceed to Task_5*
status = Task_5

Как мне достичь цели - " дать пользователю возможность исправить проблему После этого перейдите к Task_X"?

Редактировать:

Я смотрю на функциональность, похожую на функцию -

  1. , которую вы выполняете git pull --rebase,
  2. Если возникает проблема слияния, он уведомляет пользователя и позволяет ему принять меры.
  3. После того, как пользователь исправляет, он может выполнить, git rebase - -продолжить, чтобы продолжить процесс перебазирования, где он был оставлен.

1 Ответ

1 голос
/ 03 февраля 2020

Обычно команды имеют статус выхода. Если ваши задачи хорошо написаны, состояние выхода должно быть ненулевым, если задание не выполнено, и нулевым, если задание выполнено успешно. Итак, в bash вы должны написать что-то вроде:

#!/bin/bash
if Task_1 ; then
    echo 'Task_1 succeeded'
else
    #give option to rectify the problem
fi

и т. Д. Для оставшихся задач.

Вы также можете использовать код завершения последней задачи, $?, как в

Task_1
if [ $? != 0 ] ; then
    echo "Despair! Task_1 has failed"
    # allow the user to do some reparations
fi

Предоставление пользователю возможности восстановить зависит в значительной степени от того, как это делается и какова ваша среда.

Например, вы можете представить меню с фиксированные действия, такие как:

echo "a for abandon hope, b for be despaired"
read line
case "$line" in
("a")
    # actions for abandoning hope
    ;;
("b")
    # actions for being despaired
    ;;
("*")
    echo "Unknown action; continuing without doing anything."
    ;;
esac

или иногда вы можете просто запустить xterm:

echo "Close terminal when the repair is finished"
xterm

(простите за мрачные примеры)

...