如何将变量从 python 脚本传递到 bash 脚本

新手上路,请多包涵

我有一个 bash 脚本 a.sh ,我在其中调用了一个 python 脚本 b.py 。 python 脚本计算了一些东西,我希望它返回一个稍后将在 a.sh 中使用的值。我知道我能做到

在 .sh 中:

 var=`python b.py`

在 b.py 中:

 print x # when x is the value I want to pass

但这不是很方便,因为我还在 b.py 中打印了其他消息

有没有更好的方法呢?

编辑:

我现在所做的只是

var=`python b.py | tail -n 1`

这意味着我可以在 b.py 中打印很多东西,但只有最后一行(最后一行打印命令,假设它不包含“\n”)将存储在 var 中。

感谢所有的答案!

原文由 Rivka 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 445
2 个回答

我会将它打印到在命令行上选择的文件中,然后我会在 bash 中使用 cat 类的东西获得该值。

所以你会去:

 python b.py tempfile.txt
var=`cat tempfile.txt`
rm tempfile.txt

[编辑,基于其他答案的另一个想法]

您的另一个选择是仔细格式化您的输出,以便您可以使用 bash 函数,如 head / tail 仅将第一行/最后一行通过管道传输到下一个程序中。

原文由 Chris Pfohl 发布,翻译遵循 CC BY-SA 2.5 许可协议

我相信答案是

.py

 import sys
a=['zero','one','two','three']
b = int(sys.argv[1])
###your python script can still print to stderr if it likes to
print >> sys.stderr, "I am no converting"
result = a[b]
print result

.sh

 #!/bin/sh

num=2
text=`python numtotext.py $num`
echo "$num as text is $text"

原文由 Jakob Bowyer 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题