
Quiero escribir un script para mostrar un mensaje y posiblemente cancelar un cierre de sesión desde un shell interactivo. Esto se debe a que a menudo ejecuto trabajos en segundo plano en algunos de mis shells y, de improviso, cierro sesión en todos, cerrando los trabajos en ejecución. Lo que busco es un script como:
# If there are running jobs
if [ -z "$(jobs)" ]; then
# Display messages, give choices, etc.
...code...
# And finally, given some conditions (e.g. answers to questions, etc.)
cancel_logout
else
logout
Presumiblemente, lo anterior entraría en ~/.bash_logout
.
Respuesta1
La forma correcta de hacer esto es hacer que bash realice la verificación por sí mismo.
shopt -s checkjobs
Esto hará que bash muestre un aviso si queda algún trabajo ejecutándose. Si hay trabajos en ejecución, debe intentar salir dos veces para salir realmente.