2012-03-01 25 views
5

Şu şekilde iki sayı çıkaran bir Python betiğim var: 1.0 2.0 (bu rakamlar arasında boşluk var, ancak \t olabilir veya her neyse. Kaydetmek için bir bash değişkeni istiyorum ?. 1.0 ve başka değişken sadece şöyle bir değişkene bir değer "borulu" ettik geçmişte bu mümkün mü"Piping" değerlerini Bash değişkenlerine dönüştürün

2.0 kaydetmek için:

var=`python file.py` ; 

ama şimdi, ben python dosyasından iki değer kaydetmekle ilgileniyorum Kavramsal olarak benzer:

var1,var2=`python file.py` ; 

Herhangi bir öneri/yardım?

Teşekkürler!

read var1 var2 < <(python file.py) 

korkak <() sözdizimi süreç ikamesi denir:

cevap

7

Böyle bir şey kullanabilirsiniz.

+0

Bu, aşağıda benim garip saçmalıklardan çok daha iyi. – zmccord

+0

@Mat: Fevkalade çalışıyor. Teşekkürler! – Amit

1

Ben bölme alanları için kullanmak tek satırlık

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

böylece

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

düzenlemek yapabileceği geçerli: $ var etrafında eklenen tırnak

1

Ben en verimli ve zarif tahmin Burada bir şey değeri bir dizi okumak için readarray kullanmak olacaktır. Elbette dizileri kullanmakta sorun yok. Olmalısın, ama asla bilemezsin. Bununla birlikte, sınırlayıcının bir satır sonu olmasını gerektirir. Zaten:

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

Kaldırılan arka yeni satır ile python file.py her hat çıkışı için bir elementin bir dizi alacak. Bu çok havalı yapı için diğer seçenekler için man bash'a bakın.