我想从一个bash脚本执行一个python脚本,我想把python脚本的输出存储在变量中。
在我的python脚本中,我打印一些东西到屏幕,最后我返回一个字符串:
sys.exit(myString)
在我的bash脚本中,我做了以下:
outputString=`python myPythonScript arg1 arg2 arg3 `
但是当我使用echo $ outputString检查outputString的值时,我得到了Python脚本打印到屏幕的所有内容,但不是返回值myString!
我该怎么办?
编辑:我需要字符串,因为它告诉我Python脚本创建的文件所在的位置。我想做一些像:
fileLocation=`python myPythonScript1 arg1 arg2 arg1` python myPythonScript2 $fileLocation
http://docs.python.org/library/sys.html#sys.exit
如果使用字符串参数,sys.exit将会写入stderr。
做某事
python yourscript 2> return_file
Bash script – store stderr in variable
你可以在你的脚本中做这样的事情
output=$((your command here) 2> &1)
例:
test.py
print "something" exit('ohoh')
t.sh
va=$(python test.py 2>&1) mkdir $va
bash t.sh
编辑
不知道为什么,但在这种情况下,我会写一个主要脚本和另外两个脚本…混合python和bash是没有意义的,除非你真的需要。
import script1 import script2 if __name__ == '__main__': filename = script1.run(sys.args) script2.run(filename)