명령의 종료 코드를 추출하는 방법은 무엇입니까? [복사]

명령의 종료 코드를 추출하는 방법은 무엇입니까? [복사]

명령의 종료 코드를 추출하여 조건부에서 사용하려면 어떻게 해야 합니까? 예를 들어 다음 스크립트를 살펴보세요.

i=4
if [[ $i -eq 4 && $(command) -eq 0 ]]
    then
            echo "OK"
    else
            echo "KO"
    fi

두 조건이 모두 충족되면 스크립트가 작업을 수행해야 합니다. 두 번째 경우에는 위에 제공된 스크립트의 명령 출력 대신 종료 상태를 확인하여 명령이 성공했는지 여부를 확인해야 합니다.

답변1

if [ "$i" -eq 4 ] && command1; then
   echo 'All is well'
else
   echo 'i is not 4, or command1 returned non-zero'
fi

$(command) -eq 0코드에 표시된 대로 사용하여 테스트합니다.산출command종료 코드 대신 .

command1참고: 저는 as 가 아닌 표준 유틸리티의 이름을 사용하고 있습니다 command.command

답변2

$(somecmd)출력을 캡처합니다 somecmd. 명령의 종료 코드를 확인하려면 if명령문의 조건부 부분에 직접 입력하면 됩니다.

i=4
if [[ $i -eq 4 ]] && false ; then
     echo this will not print
fi
if [[ $i -eq 4 ]] && true ; then
     echo this will print
fi

답변3

종료 코드를 캡처하려면 명령을 실행한 직후(다른 명령을 실행하기 전)에 $?를 사용합니다. 그러면 당신은 다음과 같은 것을 할 수 있습니다

ls /proc/$PPID/fd
ls=$?
if test $ls != 0; then
  echo "foo failed"
  if test $ls = 2; then
    echo "  quite badly at that"
  fi
fi

즉, 종료 코드와 관련된 표현식을 여러 번 평가할 수 있습니다.

관련 정보