"管道"值为Bash变量

时间:2012-03-01 16:44:08

标签: bash variables piping

我有一个Python脚本,输出两个这样的数字:1.0 2.0(这是数字之间的空格,但它可以是\t,或者其他。我想要一个bash变量来保存1.0和另一个保存2.0的变量。这可能吗?

在过去,我只将一个值“管道”到一个变量中,如下所示:

var=`python file.py` ;

但现在,我有兴趣从python文件中保存两个值。从概念上讲,类似于:

var1,var2=`python file.py` ; 

任何建议/帮助?

谢谢!

3 个答案:

答案 0 :(得分:7)

您可以使用以下内容:

read var1 var2 < <(python file.py)

时髦的<( )语法称为进程替换。

答案 1 :(得分:1)

我用于分割字段的单行

 ... | awk '{print $1}' | ... # or $2, $3, etc.

所以你可以做到

var = `foo`
var1 = `echo "$var" | awk '{print $1}'`
var2 = `echo "$var" | awk '{print $2}'`

编辑:在$ var

附近添加引号

答案 2 :(得分:1)

我想这里最有效和优雅的事情是使用readarray来将值读入数组。当然,如果你使用数组也没关系。你应该是,但你永远不会知道。但是,这将要求分隔符为换行符。无论如何:

readarray -t values < <(python file.py)

将为python file.py输出的每一行输出一个元素数组,并删除尾部换行符。查看man bash这个非常酷的内置的其他选项。