Получавате изходния код на предишна команда в Python? - питън, баш, черупка

Възможно ли е да получите кода за излизане от предишната команда, която се изпълнява на shell в Python?

Искам да напиша скрипт, който ще върне същия код за грешка, който понастоящем е настроен (ако се приеме, че командата на Python е успешна). Би било еквивалентно да правиш нещо подобно в баш:

#!/bin/bash
err=$?

# Do something...

exit $err

Бих искал да избегна това като аргумент, ако е възможно. Например:

python script.py $?

Отговори:

2 за отговор № 1

Бих казал, че вашето решение (опаковане както на "предишната команда", така и на скрипта Python в скрипт на Shell, който следи кодовете за връщане) е начинът, по който да отидем:

#!/bin/bash
first_command
ERR=$?
python second_script.py
exit $ERR

Сценарият за Python ще бъде по-използваем, тъй като няма да разчита на никакво предположение за неговата среда.

Някаква причина, поради която това решение за обвиване не отговаря на вашия случай?


2 за отговор № 2

IMHO не е възможно. Команда, започната от bash, няма достъп до променливите на обвивката, нито до самата обвивка. Тя може само да знае:

  • цялата променлива присъства в околната среда (но $? не е)
  • пика на черупката и през нея пътя на черупката

Но аз не знам баш API да получите повече.


Свързани въпроси
Най - известен