2012-03-01 76 views
5

我有一個Python腳本,輸出兩個數字,如:1.0 2.0(這是一個數字之間的空間,但它可以是一個\t,或其他任何東西我想要一個bash變量來保存1.0,和另一個變量保存2.0這可能「管道」值變爲Bash變量

在過去,我只已經「管道」一個值到一個變量,像這樣:?

var=`python file.py` ; 

,但現在,我有興趣從python文件中保存兩個值。概念上,類似於:

var1,var2=`python file.py` ; 

任何建議/幫助?

謝謝!

回答

7

您可以使用這樣的事情:

read var1 var2 < <(python file.py) 

時髦<()語法稱爲進程替換。

+0

這比我下面awk的廢話好多了。 – zmccord 2012-03-01 16:52:41

+0

@Mat:非常出色。謝謝! – Amit 2012-03-01 18:32:54

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這個非常酷的內置的其他選項。