Вызов python из оболочки и захват вывода
Я написал программу в оболочке. И внутри этого скрипта, я вызываю скрипт Python. Это прекрасно работает. Я хочу, чтобы мой скрипт python вернул выходные данные скрипту shell. Возможно ли это? (Я не получил никакого такого способа в google). Скажите, пожалуйста, как это сделать, если это возможно?
test.sh
#!/bin/bash
python call_py.py
И скрипт python(call_py.py
)
#!/usr/bin/python
if some_check:
"return working"
else:
"return not working"
Как мне вернуться из python и поймать в shell?
2 ответа:
Чтобы получить выходные данные команды в переменной, используйте подстановку процесса:
var=$( cmd )
Например
var=$( ls $HOME )
Или
var=$( python myscript.py)
В $ () - это (почти) в точности эквивалентно, используя обратные кавычки, обратные кавычки, но синтаксис является устаревшим и $() является предпочтительным.
Если вы хотите вернуть строку "работает" или "не работает" и использовать это значение в сценарии оболочки, чтобы определить, был ли сценарий python успешным, измените свой план. Гораздо лучше использовать возвращаемое значение. например, в python вы "возвращаете 0" или "возвращаете 1" (ноль для успеха, 1 для неудачи), а затем скрипт оболочки просто:
if python call_py.py; then echo success else echo failure fi