Почему бы не перехватить INT и не остановить EXIT немедленно выполнение этого сценария?Linux

Ответить
Anonymous
 Почему бы не перехватить INT и не остановить EXIT немедленно выполнение этого сценария?

Сообщение Anonymous »

В следующем сценарии у меня настроена ловушка как для INT (SIGINT), так и для EXIT, и я понимаю, что при отправке CTRL+C (SIGINT) срабатывает ловушка INT, и сценарий продолжается до завершения. тогда как при использовании EXIT сценарий завершается сразу после достижения конца.
Вот пример, который ведет себя должным образом:

Код: Выделить всё

# Function to handle traps
function handle_trap {
echo "Trap triggered"
}

# Trap INT and EXIT
trap handle_trap INT
trap handle_trap EXIT

# Simulate some steps
echo "Running step 1..."
sleep 3

echo "Running step 2..."
sleep 3

echo "Running step 3..."
sleep 3

echo "Completed script execution."
Когда я нажимаю CTRL+C (SIGINT) во время команд сна, запускается функция handle_trap, но скрипт продолжает выполняться, пока не достигнет конца. Такое поведение мне понятно.
Однако в следующем примере:
Я запускаю bash-скрипт, который устанавливает Foundry. Когда я принудительно останавливаю процесс установки (например, нажимая CTRL+C), установка Foundry останавливается, как и ожидалось. Однако остальная часть сценария продолжает выполняться, а не завершается немедленно.

Код: Выделить всё

# Function to handle traps
function handle_trap {
echo "Trap triggered"
}

# Trap INT and EXIT
trap handle_trap INT
trap handle_trap EXIT

# Install foundry
foundryup.

# Simulate some steps
echo "Running step 1..."
sleep 3

echo "Running step 2..."
sleep 3

echo "Running step 3..."
sleep 3

echo "Completed script execution."

Когда я нажимаю CTRL+C во время выполнения команды сна, я ожидаю, что сценарий немедленно остановится, но вместо этого печатается сообщение-ловушка («Trap-сработало»), и сценарий продолжает работать. следующий шаг перед остановкой.
Почему сценарий продолжает работу после захвата INT или EXIT, а не сразу останавливается?
Как я могу гарантировать, что сценарий остановится сразу после обработки ловушки?< /p>
  • Я хочу, чтобы при принудительной остановке установки Foundry сценарий останавливался в этой конкретной точке, а последующая часть сценария прекращала выполнение.

    Я хочу, чтобы при принудительной остановке установки Foundry сценарий останавливался в этой конкретной точке, а последующая часть сценария прекращала выполнение.

    Я хочу, чтобы при принудительной остановке установки Foundry сценарий останавливался в этой конкретной точке, а последующая часть сценария прекращала выполнение. li>
Будем благодарны за любую помощь, чтобы понять это поведение и исправить его!

Подробнее здесь: https://stackoverflow.com/questions/790 ... -execution
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»