2016-01-22 408 views
2

我已經在shell中編寫了一個程序。在這個shell腳本中,我正在調用一個python腳本。這工作正常。 我想讓我的python腳本將輸出返回到shell腳本。 這可能嗎? (我沒有在谷歌上得到任何這樣的方式)。 如果可能,請告訴我該怎麼做?從shell調用python並捕獲輸出

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和捕捉返回的殼呢?

回答

3

爲了得到一個命令的輸出在一個變量,使用過程中的取代:

var=$(cmd) 

例如

var=$(ls $HOME) 

var=$(python myscript.py) 

的$()是(幾乎)完全等同於使用反引號,但是反引號語法已被棄用,並且$()是首選。

如果您的意圖是返回一個字符串'working'或'not working',並在shell腳本中使用該值來確定python腳本是否成功,請更改您的計劃。使用返回值要好得多。例如,在Python中你'返回0'或'返回1'(成功爲0,失敗爲1),然後shell腳本就是:

if python call_py.py; then 
    echo success 
else 
    echo failure 
fi 
+0

在python中,我們可以使用sys.exit(0)成功和sys.exit(1)失敗。 – Gauranga

2

使用$(...)以字符串形式捕獲命令的stdout。

output=$(./script.py) 
echo "output was '$output'" 

if [[ $output == foobar ]]; then 
    do-something 
else 
    do-something-else 
fi