我有Python代码:
x = sys.argv[1]
y = sys.argv[2]
i = sofe_def(x,y)
if i == 0:
print "ERROR"
elif i == 1:
return str(some_var1)
else:
print "OOOps"
num = input("Chose beetwen {0} and {1}".format(some_var2, some_var3))
return str(num)
我必须在shell脚本中执行此脚本并在shell变量中返回字符串,如:
VAR1="foo"
VAR2="bar"
RES=$(python test.py $VAR1 $VAR2)
不幸的是它不起作用。由于代码中有大量的print和input(),stderr,stdout和stdin的方式也不起作用。那我怎么解决我的问题呢?谢谢你的回答
答案 0 :(得分:3)
这甚至不是有效的Python代码;你在函数之外使用return
。你不会return
在这里,只是print
声明。
x, y = sys.argv[1:3]
i = sofe_def(x,y)
if i == 0:
print >>sys.stderr, "ERROR"
elif i == 1:
print str(some_var1)
else:
print >>sys.stderr, "OOOps"
print >>sys.stderr, "Choose between {0} and {1}".format(some_var2, some_var3)
num = raw_input()
print num
(注意其他一些变化:
raw_input
,而不是input
。)
然后你的shell
VAR1="foo"
VAR2="bar"
RES=$(python test.py "$VAR1" "$VAR2")
应该有效。除非你有充分的理由不,否则请引用参数扩展。
答案 1 :(得分:2)
只需使用打印而不是返回 - bash片段会在STDOUT上预期结果。