2014-06-08 7 views
0

저는 리눅스에서 쉘 스크립트 작업을하고 있습니다.쉘 스크립트에서 배정도 쉘 변수 나누기

두 개의 이중 변수가 있는데이를 나누고 결과를 다른 변수에 넣기를 원합니다.

I 시도 다음 (작동하지 않습니다) : 내가

#!/bin/bash 
A=333.33 
B=111.11 
echo "$A/$B" | bc -l 

를하고있는 중이 야 무슨 잘못 다음 작업 않지만

#!/bin/bash 
A=333.33 
B=111.11 
C="$A/$B" | bc -l 

? (|)는 "BC -l"가 작동하지 않는 배관이 때문에

감사 매트

답변

2

파이프 출력 스트림에서 작동하고 :

C="$A/$B" | bc -l 

출력 스트림에 "$A/$B"를 전송하지 않습니다, 대신 그냥 EOF를 보냅니다.

이 작업을 수행 할 수 있습니다

C=$(echo "$A/$B" | bc -l) 

C에 결과를 얻을 수 있습니다.

0

"$의 A/$ B는"단지 문자열입니다. 파이프는 한 프로세스의 stdout을 다른 프로세스의 stdout과 "연결"합니다. echo "$ A/$ B"는 문자열의 값을 stdout에 전달하고 파이프는 bc의 stdin으로 전달합니다. 이것은 예상대로 작동합니다.

+0

: C ='에코 "$의 A/$의 B를"| bc -l' – Lennart

+0

C = backtick echo ... backtick이라고해야합니다. – Lennart

0

는 파이프를 사용할 때 출력 밀어 반드시 :

commandA|commandB 

commandA 출력은 파이프 라인에서 밀려 commandB에 의해 처리된다. 따라서 commandA은 파이프에 의해 처리되는 stdout 스트림에 출력을 인쇄해야합니다.

그래서 대신 사용할 수 있습니다

C=$(echo "$A/$B"|bc -l) 
# or 
C=`echo "$A/$B"|bc -l` 
# or 
C=$(bc -l <<< "$A/$B") 
# or 
C=`bc -l <<< "$A/$B"` 

당신이 변수에 결과를 설정합니다.

작업 버전의
0

: 당신이 변수 C의 결과를 원하는 경우

#!/bin/bash 
A=333.33 
B=111.11 
C=`bc -l <<< "$A/$B"` 
echo $C 
관련 문제