2013-04-18 5 views
18

이 결과를 셸 변수에 할당하는 방법은 무엇입니까?쉘 스크립트 변수에 출력을 할당하는 방법은 무엇입니까?

입력 :

echo '1+1' | bc -l

출력 :

2

시도가 :

(작동하지 않았다)

#!bin/sh 
a=echo '1+1' | bc -l 
echo $a 
+0

가능한 [BASH 변수를 명령 출력과 동일하게 설정하는 방법] (http://stackoverflow.com/questions/4651437/how-to-set-a-bash-variable-equal-to -the-output-from-a-command) – Jahid

답변

32

명령 대체라고하는 쉘 기능을 찾고 있습니다.

2 개 위로 돌 시대에 cmd를 대체

  1. 원래의 형태 있지만, 모든 유닉스 쉘 (물론 거의 모든) 완전히 휴대용 및 사용할 수 있습니다.

    당신은

    $ a=$(echo 1+1 | bc -l) 
    $ echo $a 
    2 
    $ 
    
즉 당신의 가치 백 틱 문자 내에서 명령을 생성 $(cmd)와 함께 제공 즉

$ a=`echo 1+1 | bc -l` 
$ echo $a 
2 
$ 
  • 현대, 찾고 덜 투박한 쉽게 중첩 가능한 cmd를-대체를 둘러싸

    'she-bang'행에 #!/bin/sh이 표시되어 실제 Unix 플랫폼에서 실행중인 경우 /bin/sh은 원래의 Bourne 쉘이며 위의 옵션 1을 사용해야합니다.

    #!/bin/sh을 사용하면서 2 번 옵션을 시도하면 제대로 작동합니다. echo ${.sh.version} 또는 /bin/sh -c --version을 입력하고 유용한 정보가 있는지 확인하십시오. 버전 번호를 얻으면 최신 쉘에 포함 된 추가 기능에 대해 배우고 싶을 것입니다. 당신이 정말로, zsh을, 경우 ksh93의 +를 떠들썩한 파티를 사용하는 경우 더 많은 수학 연산을 수행하는 경우 새로운 기능의

    말하기, 다음

    a=$((1+1)) 
    

    로 샘플 코드를 다시 작성 또는 수, 그 모든 내부있을 것 (bc와 당신이 할 수있는 반면에) 당신은 별도의 프로세스 생성을 방지 할 수 있습니다,하지만 당신은 쉘에서 부동 소수점 연산 할 수 없어, 어느 경우

    ((b=1+1)) 
    echo $b 
    2 
    

    : 범위, 당신은 같은 쉘 기능 연산을 사용할 수 있습니다.

  • +0

    원더풀 설명. Thx 대단히. 잘 작동합니다! – GarouDan

    관련 문제