将“管道”中的值传递到Bash变量中

5
我有一个Python脚本,输出两个数字,格式如下:1.0 2.0(数字之间有空格,但也可以是\t等)。我想保存1.0到一个bash变量中,再把2.0保存到另一个变量中。这是否可行?
以前,我只将一个值传递到变量中,类似如下操作:
var=`python file.py` ;

但是现在,我对从Python文件中保存两个值感兴趣。概念上类似于:

var1,var2=`python file.py` ; 

需要帮忙或建议吗?

谢谢!

3个回答

7
您可以使用如下代码:

您可以使用以下代码:

read var1 var2 < <(python file.py)

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

这比我下面的awk废话好多了。 - zmccord
@Mat:工作得非常好。谢谢! - Amit

1
我用于拆分字段的一行代码是:
 ... | awk '{print $1}' | ... # or $2, $3, etc.

这样你就可以做到

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

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


1

我想在这里最有效和优雅的做法是使用readarray将值读入数组中。当然,如果您愿意使用数组的话。你应该会,但你永远不知道。不过,这需要分隔符为换行符。

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

将为您获取一个数组,其中每个元素对应于由python file.py输出的每一行,并删除尾随的换行符。请查看man bash以获取此非常酷的内置功能的其他选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接