Это устанавливает ловушку ERR
:
trap 'printf "Error for %s, halted, continue with fg\n" "$cmd"; kill -s STOP $$; continue' ERR
while IFS= read -r cmd; do
command $cmd
done <input
Ловушка срабатывает при любой ошибке, которая обычно приводит к сбой при запуске под set -e
. Ловушка напечатает информационное сообщение, а затем временно остановит процесс.
Когда пользователь возобновляет его с помощью fg
, оператор continue
в ловушке гарантирует, что следующая строка ввода будет прочитана.
Пока сценарий приостановлен, можно редактировать входной файл. Сценарий продолжит чтение со следующей строки ввода после строки, содержащей неудачную команду.
#!/bin/bash
echo "$0 $$"
##Here do your stuff and redirect the errors to a log file
##if an error is found say using $?, use the following
kill -SIGSTOP $$
##After you'r done correcting your file
##use kill -SIGCONT <pid> on a console, the process shall continue
## Put in a mechanism to retry the last executed command
echo "I am done!!! after SIGSTOP $$"
exit 0
Это всего лишь пример, вы можете реализовать его по-своему в соответствии с вашими требованиями.