2012-03-01 16 views
5

1.0 2.0のような2つの数字を出力するPythonスクリプトがあります(数値の間にスペースが入りますが、\tなどがあります)。 。1.0、および2.0を保存するために別の変数は、このことは可能です過去にはBash変数に "配管"値を設定

、私はそうのような変数に一つの値を「パイプ」しました:?今

var=`python file.py` ; 

しかし、私はよPythonファイルから2つの値を保存することに興味があります。概念的には、次のようになります。

var1,var2=`python file.py` ; 

アドバイス/ヘルプ?

ありがとうございます!

read var1 var2 < <(python file.py) 

ファンキー<()構文は、プロセス置換と呼ばれている:

答えて

7

あなたはこのようなものを使用することができます。

+0

これは私のawkナンセンスよりもずっと優れています。 – zmccord

+0

@Mat:素晴らしい作品です。ありがとう! – Amit

1

私は分解体に使用するワンライナーはそうあなたが

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

編集行うことができます

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

あります。$ VAR

1

周りに追加の引用符は、私が最も効率的かつエレガントを推測しますここでは値を配列に読み込むためにreadarrayを使用します。もちろん、配列を使っても構いません。あなたはすべきだが、あなたは決して知らない。しかし、これは区切り文字が改行文字でなければなりません。とにかく:

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

は削除末尾の改行でpython file.pyであなたの各ライン出力のための一つの要素の配列を取得します。この非常にクールなビルトインの他のオプションについてはman bashをチェックしてください。

関連する問題