2012-03-01 4 views
5

1.0 2.0과 같은 두 개의 숫자를 출력하는 파이썬 스크립트가 있습니다. 숫자 사이에 공백이 있지만, \t이 될 수 있습니다. ?. 1.0, 또 다른 변수는 I 만과 같이 변수에 하나 개의 값을 "파이프"한, 과거에는이게 가능Bash 변수에 "파이핑"값

2.0을 저장합니다 :

var=`python file.py` ; 

하지만 지금, 난 python 파일에서 두 개의 값을 저장하는 데 관심이 있습니다. 개념적으로는 다음과 유사합니다.

var1,var2=`python file.py` ; 

조언이 있습니까?

감사합니다.

read var1 var2 < <(python file.py) 

펑키 <() 구문이 프로세스 대체 호출됩니다

답변

7

는이 같은 것을 사용할 수 있습니다.

+0

이것은 내 awk 넌센스보다 훨씬 좋습니다. – zmccord

+0

@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을 확인하십시오.