3
У меня есть скрипт bash с двумя индексами t1 и t2. Оба t1 и t2 являются фоновыми процессами, а t1 вызывает ошибку. Как я могу поймать эту ошибку и полностью завершить весь скрипт?Как выйти из сценария bash, когда один из его фоновых процессов имеет ошибку?
#!/bin/bash
set -e
error1() {
echo "exit whole script!!!"
exit 1
}
# this script will rise an error
./t1.sh &
pid1=$!
./t2.sh &
pid2=$!
wait $pid2
if [ $pid2 -eq 0 ]; then
trap 'error1' ERR
fi
wait $pid1
if [ $pid1 -eq 0 ]; then
trap 'error1' ERR
fi
Возможно ли запустить t1 и t2 в качестве фонового процесса и прекратить выполнение сценария, когда либо один из них вызывает ошибку? – Michael
Да, это возможно. Добавьте условие bash к 'wait' на обоих идентификаторах процесса и выполните соответствующие действия. – Inian
Я попробовал ваше предложение, но я все еще не могу заставить его работать, он не переходит к ошибке1(). Можете ли вы любезно взглянуть на него? Я редактировал код выше. Большое спасибо – Michael