получение кода выхода фонового процесса / подоболочки

Ваша команда aptitude ищет установленные пакеты, но исключает пакеты, которые были установлены автоматически ! ~ M . Конечно, это другой список, чем apt -installed . Эти две команды вернут один и тот же список:

aptitude search '~i' -F '%p' 
apt --installed  list 
0
02.05.2018, 00:30
1 ответ

Небольшое тестирование показывает, что мой предыдущий комментарий неверен:

$ cat long_running.sh 
#!/bin/bash
sleep 3
echo "long_running: $$"
pstree -ps $$
status=$((RANDOM % 2))
echo "exiting with status $status"
exit $status

$./long_running.sh
long_running: 6599
systemd(1)───gnome-terminal-(4112)───bash(5899)───long_running.sh(6599)───pstree(6601)
exiting with status 1

$ (./long_running.sh )
long_running: 6618
systemd(1)───gnome-terminal-(4112)───bash(5899)───long_running.sh(6618)───pstree(6621)
exiting with status 0

Нет «man -в -средней -оболочке, поэтому я полагаю, что bash порождает подоболочку и execкоманды.

Чтобы зафиксировать статус выхода, вы делаете правильную вещь

$ (./long_running.sh ) & pid=$!; wait $pid && echo ok || echo damn
[1] 7439
long_running: 7439
systemd(1)───gnome-terminal-(4112)───bash(5899)───long_running.sh(7439)───pstree(7441)
exiting with status 0
[1]+  Done                    (./long_running.sh )
ok

$ (./long_running.sh ) & pid=$!; wait $pid && echo ok || echo damn
[1] 7457
long_running: 7457
systemd(1)───gnome-terminal-(4112)───bash(5899)───long_running.sh(7457)───pstree(7461)
exiting with status 1
[1]+  Exit 1                  (./long_running.sh )
damn
1
28.01.2020, 02:43

Теги

Похожие вопросы