5

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

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

var=`python file.py` ;

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

var1,var2=`python file.py` ; 

有什么建议/帮助吗?

谢谢!

4

3 回答 3

7

你可以使用这样的东西:

read var1 var2 < <(python file.py)

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

于 2012-03-01T16:48:26.643 回答
1

我用于分割字段的单线是

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

所以你可以做

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

编辑:在 $var 周围添加引号

于 2012-03-01T16:48:27.367 回答
1

我想这里最有效和最优雅的事情是用来readarray将值读入数组。当然,前提是您可以使用数组。你应该是,但你永远不知道。不过,这将要求分隔符是换行符。无论如何:

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

将为您提供一个包含一个元素的数组,该数组由python file.py删除尾随换行符的每一行输出。查看man bash这个非常酷的内置的其他选项。

于 2012-03-01T16:53:09.740 回答