2016-12-09 6 views
0

프로그램의 종료 코드를 인수와 비교하려고합니다.여기에 무슨 문제가 있습니까? (종료 코드 비교)

CODE=$1 
if [[ $(./program) -eq $CODE ]]; then 
    echo "same" 
else 
    echo "different" 
fi 

$1"1"를 얻을 곳이 내가 뭘하는지입니다. 하지만 오류가 발생했습니다. 여기 뭐가 잘못 됐니?

+0

오류가 무엇입니까? ./program –

+3

종료 코드를 비교하지 않는다. 단지'program'의 결과를 비교하는 것일 뿐이다. – anubhava

+2

다음과 같이 : 자신의 변수에 소문자를 사용한다. - 쉘이나 운영체제에 의미가있는 변수 이름은 모두 " 따라서 대문자로 된 이름을 직접 사용하면 실수로 덮어 쓸 위험이 있습니다 (특히 셸 변수를 설정하면 비슷한 이름의 환경 변수를 덮어 씁니다). [관련 표준] (http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html)을 참조하십시오. –

답변

5

종료 코드를 비교하지 않습니다. 당신은 프로그램의 표준 출력을 $CODE과 비교하고있다.

미정 :

CODE="$1" 
./program 
rc=$? 
if [[ "$rc" -eq "$CODE" ]] 
then echo "same" 
else echo "different" 
fi 

당신은 단지 조건에 $?를 사용할 수 있지만,보고 및 검증을 위해 그것을 할 수 있습니다 :

CODE="$1" 
./program 
rc=$? 
if [[ "$rc" -eq "$CODE" ]] 
then echo "same ($rc and $CODE)" 
else echo "different (got $rc, wanted $CODE)" 
fi 
+0

프로그램의 출력물을 가지고 놀 필요가 있다면 어떻게해야합니까? 그냥 두 번 실행합니까? 어떻게 나에게'res = $ (./ program)'을 보여줬 는가? –

+1

@UFCInsider,'program_output = $ (./ program); program_rc = $?' –

+0

알겠습니다. 감사! –

관련 문제