Según la Documentación de Openconnect , la opción que le gustaría probar sería:
-b,--background
Continue in background after startup
Это не связано с тем, что процесс является фоновым, это связано со статусом выхода команды wait
.
Изhelp wait
:
If ID is not given, waits for all currently active child processes, and the return status is zero.
$ bash -exc '(sleep 1; exit 1) & wait ; echo done'
+ wait
+ sleep 1
+ exit 1
+ echo done
done
If the -n option is supplied, waits for the next job to terminate and returns its exit status.
$ bash -exc '(sleep 1; exit 1) & wait -n; echo $?:done'
+ wait -n
+ sleep 1
+ exit 1
Ваш код не завершит текущую сессию оболочки, поскольку ему не возвращается не -нулевой статус выхода . Результат в вызывающей оболочке запуска фонового задания всегда нулевой.
Если бы вы использовали wait "$!"
илиwait -n
(«ожидание завершения следующего задания» ), тогда сеанс оболочки был бы завершен, поскольку wait
вернул бы статус выхода из ожидаемое задание, которое не равно -нулю.
См. help wait
в bash
.