gpt4 book ai didi

python - 将 Python 脚本的返回值存储在 bash 脚本中

转载 作者:IT老高 更新时间:2023-10-28 20:34:23 25 4
gpt4 key购买 nike

我想从 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

最佳答案

sys.exit(myString) 并不意味着“返回这个字符串”。如果您将字符串传递给 sys.exit , sys.exit 会将该字符串视为错误消息,并将该字符串写入 stderr。与整个程序的返回值最接近的概念是它的exit status。 , 必须是整数。

如果要捕获写入 stderr 的输出,you can do something like

python yourscript 2> return_file

你可以在你的 bash 脚本中做类似的事情

output=$((your command here) 2> &1)

但不能保证只捕获传递给 sys.exit 的值。写入 stderr 的任何其他内容也将被捕获,其中可能包括日志输出或堆栈跟踪。

示例:

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)

关于python - 将 Python 脚本的返回值存储在 bash 脚本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11900828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com