2013-06-21 25 views
3

我有一个调用一个python脚本bash脚本。起初我只是返回一个变量,这很好,但现在我被告知返回两个变量,我想知道如果有一个干净和简单的方式返回多个变量。如何从蟒蛇返回多个变量来砸向

archiveID=$(python glacier_upload.py $archive_file_name $CURRENTVAULT) 

在呼叫我从庆典

print archive_id['ArchiveId'] 
archive_id['ArchiveId'] 

这将返回存档id到bash脚本

通常,我知道你可以使用一个return语句在Python返回多个变量做,但它只是一个脚本,是我发现返回一个变量的方式。我可以让它成为一个被调用的函数,但即使如此,我将如何接收我将传回的多个变量?

回答

5

从你的Python脚本,输出每行一个变量。然后从你的bash脚本,读取每行一个变量:

的Python

print "foo bar" 
print 5 

猛砸

#! /bin/bash 

python main.py | while read line ; do 
    echo $line 
done 

最终解决方案:

感谢纪尧姆!你给我一个精彩的出发点。我只是将我的解决方案发布给其他人。

#! /bin/bash 

array=() 
while read line ; do 
    array+=($line) 
done < <(python main.py) 
echo ${array[@]} 

我发现我需要here

+0

你也可以说'映射文件-t阵列<<(蟒蛇main.py)'解决方案的其余部分 - 看'从bash提示符帮助mapfile' 。 –