Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将多个变量从python返回到bash_Python_Bash_Scripting_Return_Multiple Value - Fatal编程技术网

如何将多个变量从python返回到bash

如何将多个变量从python返回到bash,python,bash,scripting,return,multiple-value,Python,Bash,Scripting,Return,Multiple Value,我有一个调用python脚本的bash脚本。起初我只是返回一个变量,这很好,但现在我被告知返回两个变量,我想知道是否有一种干净简单的方法可以返回多个变量 archiveID=$(python glacier_upload.py $archive_file_name $CURRENTVAULT) 是我从bash打的电话 print archive_id['ArchiveId'] archive_id['ArchiveId'] 这会将存档id返回给bash脚本 通常我知道可以在python中使用

我有一个调用python脚本的bash脚本。起初我只是返回一个变量,这很好,但现在我被告知返回两个变量,我想知道是否有一种干净简单的方法可以返回多个变量

archiveID=$(python glacier_upload.py $archive_file_name $CURRENTVAULT)
是我从bash打的电话

print archive_id['ArchiveId']
archive_id['ArchiveId']
这会将存档id返回给bash脚本


通常我知道可以在python中使用return语句来返回多个变量,但它只是一个脚本,这是我找到的返回变量的方式。我可以让它成为一个被调用的函数,但即使如此,我如何接收我要传回的多个变量?

从python脚本中,每行输出一个变量。然后从bash脚本中,每行读取一个变量:

蟒蛇

print "foo bar"
print 5
猛击

最终解决方案: 谢谢纪尧姆!你给了我一个很好的出发点。我只是想在这里为其他人发布我的解决方案

#! /bin/bash

array=()
while read line ; do
  array+=($line)
done < <(python main.py)
echo ${array[@]}
#/bin/bash
数组=()
读行时;做
数组+=($line)

完成<我最喜欢的方式是直接阅读列表:

x=($(python3 -c "print('a','b','c')"))
echo ${x[1]}
b
echo ${x[*]}
a b c
因此,如果我的_python _函数返回一个元组,我将使用format确保只得到以空格分隔的结果:

#Assuming a tuple of length 3 is returned
#Remember to quote in case of a space in a single parameter!
print('"{}" "{}" "{}"'.format(*my_python_function())
如果希望这是通用的,则需要构造格式字符串:

res = my_python_function()
print(("{} "*len(res)).format(*res))
这是一种方法。不需要担心额外的空间,但是可以在格式字符串上[:-1]来消除它

最后,如果您希望使用多个单词参数(即单个参数中的空格,您需要添加引号和间接寻址级别(我假设您将只运行自己的“安全”脚本):


您也可以说
mapfile-t array<感谢您以另一种方式分享:)
res = my_python_function()
print(("{} "*len(res)).format(*res))
#myfile.py
res = my_python_function()
print(('"{}" '*len(res)).format(*res))

#my file.bash
eval x=($(python3 myfile.py))