Что здесь происходит?
Следующее работает как ожидалось:
$ bash -c 'false; echo $?'
1
Но попытка уничтожить несуществующий процесс с помощью pkill
приводит к завершению работы bash до завершения сценария.
$ bash -c 'pkill -f xyz_non_existent_process_xyz; echo $?'
[1] 21078 terminated bash -c 'pkill -f xyz_non_existent_process_xyz; echo $?'
Если я запускаю эту команду в терминале, я вижу, что pkill
возвращает код ошибки 1
, как и команда false
:
$ pkill -f xyz_non_existing_process_xyz; echo $?
1
Итак, две команды возвращают один и тот же код состояния ... в чем же разница!?
Я попытался обернуть команду несколькими способами. Например:
$ bash -c '(pkill -f xyz_non_existent_process_xyz || true); echo $?'
[1] 21309 terminated bash -c '(pkill -f xyz_non_existent_process_xyz || true); echo $?'
Похоже, что все, что заставляет bash завершаться раньше, это не состояние завершения какой-либо из команд ??
Что здесь происходит?