从命令行

时间:2018-06-14 22:55:09

标签: bash

说我有一些看起来像

的python脚本
# myscript.py
#!bin/env python

def func(argv):
    <some debugging print messages>
    <some logic>
    return some_string

def main():
    return func(sys.argv)

如何在bash脚本或终端会话中捕获此脚本的返回字符串值(打印到控制台或在另一个命令中用作值)?

在SO上发现了其他几个类似的帖子(return value from python script to shell scriptstore return value of a Python script in a bash script),但这些似乎并不能说明需要将中间消息保留在代码中的事实(例如。喜欢

#echo "$(myscript.py 'input')" 

最终包括所有python脚本的调试消息以及返回值)。有谁知道这里可以做些什么?

2 个答案:

答案 0 :(得分:1)

如果返回值(问题中不清楚)是单行输出,您可以简单地说:

./script.py | tail -n 1

这将输出脚本生成的最后一行(根据需要调整数字)。

如果要保存到文件>以创建新文件,或>>附加到文件:

./script.py | tail -n 1 > file 

答案 1 :(得分:0)

使用logging模块而不是打印。默认情况下它将打印到stderr,您可以将其重定向到其他位置...或禁用所有调试输出。请查看本页顶部的表格以获取使用建议:https://docs.python.org/2/howto/logging.html