Вот пример, который ведет себя должным образом:
Код: Выделить всё
# 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."
Однако в следующем примере:
Я запускаю 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."
Почему сценарий продолжает работу после захвата INT или EXIT, а не сразу останавливается?
Как я могу гарантировать, что сценарий остановится сразу после обработки ловушки?< /p>
- Я хочу, чтобы при принудительной остановке установки Foundry сценарий останавливался в этой конкретной точке, а последующая часть сценария прекращала выполнение.
Я хочу, чтобы при принудительной остановке установки Foundry сценарий останавливался в этой конкретной точке, а последующая часть сценария прекращала выполнение.
Я хочу, чтобы при принудительной остановке установки Foundry сценарий останавливался в этой конкретной точке, а последующая часть сценария прекращала выполнение. li>
Подробнее здесь: https://stackoverflow.com/questions/790 ... -execution
Мобильная версия