当前位置: 首页 > 面试题库 >

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

佴博实
2023-03-14
问题内容

我想从bash脚本执行python脚本,并且要将python脚本的输出存储在变量中。

在我的python脚本中,我将一些内容打印到屏幕上,最后我返回一个带有以下内容的字符串:

sys.exit(myString)

在我的bash脚本中,我执行了以下操作:

outputString=`python myPythonScript arg1 arg2 arg3 `

但是,当我检查outputStringwith的值时,echo $outputString我得到了Python脚本打印到屏幕上的所有内容,但
没有 返回myString

我应该怎么做?

编辑:我需要该字符串,因为它告诉我Python脚本创建的文件位于何处。我想做类似的事情:

fileLocation=`python myPythonScript1 arg1 arg2 arg1`
python myPythonScript2 $fileLocation

问题答案:

sys.exit(myString)并不意味着“返回此字符串”。如果您将字符串传递给sys.exitsys.exit则会将该字符串视为错误消息,并将该字符串写入stderr。对于整个程序,最接近返回值的概念是其退出状态,该状态必须为整数。

如果要捕获写入stderr的输出,可以执行以下操作

python yourscript 2> return_file

您可以在bash脚本中执行类似的操作

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

但是,不能保证仅捕获传递给的值sys.exit。写入stderr的所有其他内容也将被捕获,其中可能包括记录输出或堆栈跟踪。

例:

test.py

print "something"
exit('ohoh')

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)


 类似资料:
  • 问题内容: 我正在编写一个脚本来备份数据库。我有以下几行: 我想将stderr分配给一个变量,以便它将向自己发送一封电子邮件,让我知道如果出现问题,会发生什么。我已经找到了将stderr重定向到stdout的解决方案,但是由于stdout已经(通过gzip)发送到文件中,因此我无法做到这一点。如何将stderr分别存储在变量$ result中? 问题答案: 尝试将stderr重定向到stdout并

  • 我有一个由jenkins管道触发的外壳脚本,它检测文件夹中的文件是否已更改。我希望脚本根据文件夹中的更改返回1或0到管道脚本。我还想在管道脚本中读取返回的值,以便我可以相应地采取行动。

  • 问题内容: 我正在显示项目ID和标题。还有一个链接“显示此成员的项目”。单击它会显示该用户的项目。为此,我使用ajax。有一个脚本可以检测单击复选框。此选项对于第一个列出的项目正常工作,但对ajax返回的项目无效 脚本代码和ajax是 getdetails.php代码是 问题答案: 使用此脚本

  • 问题内容: 我将在开头说“不,找到一种不同的方式来做这件事”是一个可以接受的答案。 是否存在一种可靠的方法来将少量JSON存储在bash变量中,以便在从同一脚本运行的AWS CLI命令中使用? 我将在Jenkins上运行一项工作,该工作正在更新AWS Route53记录,这需要使用记录中的更改进行UPSERTing JSON文件。因为它是从Jenkins运行的,所以没有本地存储可以保存此文件,因此

  • 问题内容: 我有一个bash脚本a.sh,其中有一个python脚本b.py。python脚本计算某些内容,我希望它返回一个值,该值稍后将在a.sh中使用。我知道我能做 在a.sh中: 在b.py中: 但这不是那么方便,因为我还在b.py中打印了其他消息 有什么更好的方法吗? 编辑: 我现在正在做的只是 这意味着我可以在b.py中打印很多东西,但是只有最后一行(假设它不包含“ \ n”,这是最后一

  • 我试图从一个简单的BASH脚本执行一个简单的PHP脚本。这个网站上的答案不能回答我的问题。 这是我的BASH脚本 这是我的PHP脚本 从命令行运行BASH脚本时,出现以下错误。 我试过键入/usr/bin/php-q/home/username/subfolder/durable2。这很好。它跑起来了