명령의 종료 코드를 추출하여 조건부에서 사용하려면 어떻게 해야 합니까? 예를 들어 다음 스크립트를 살펴보세요.
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
즉, 종료 코드와 관련된 표현식을 여러 번 평가할 수 있습니다.