5

次のように 2 つの数値を出力する Python スクリプトがあります: 1.0 2.0(これは数値の間にスペースがありますが、\t、または何でもかまいません。bash 変数で を保存し1.0、別の変数で を保存し2.0ます。これは可能ですか?

以前は、次のように 1 つの値を変数に「パイプ」しただけでした。

var=`python file.py` ;

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

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末尾の改行が削除された各行出力の 1 つの要素の配列を取得します。man bashこの非常にクールなビルトインの他のオプションをチェックしてください。

于 2012-03-01T16:53:09.740 に答える