2023-10-27 08:49:27

shell script로 코드를 짜다보면 바로 전 명령이 제대로 성공했는지 여부를 확인하고 싶은 경우가 있습니다. 이럴 때는 $?으로 확인 가능한데, 0을 반환하면 성공한 것이고, 그 외 다른 값을 반환하면 실패한 것입니다. 

 

간단한 예제 코드를 살펴보겠습니다. 

 

#!/bin/bash

ls -al
if [ $? -eq 0 ]; then
        echo "ls -al 명령 성공"
else
        echo "ls -al 명령 실패"
fi

lsd -al
if [ $? -eq 0 ]; then
        echo "lsd -al 명령 성공"
else
        echo "lsd -al 명령 실패"
fi

 

ls -al 명령의 경우는 정상적으로 실행하기 때문에 그 아래 if문 조건식 내 $?는 0이 됩니다. 따라서, 명령 성공이 출력됩니다.

 

반면, lsd -al의 경우 존재하지 않는 명령이기 때문에 실패하여 그 아래 if문 조건식 내 $?는 0이 아닌 숫자가 됩니다. 따라서, 명령 실패가 출력됩니다. 

 

 

위 방법 대신 아래와 같은 방법으로도 동일한 기능을 하는 코드를 구현할 수 있습니다.

 

명령 && 성공시명령 || 실패시명령

 

#!/bin/bash

ls -al && echo "ls -al 명령 성공" || echo "ls -al 명령 실패"

lsd -al && echo "lsd -al 명령 성공" || echo "lsd -al 명령 실패"

 

코드가 한결 간결해졌죠? 

 

 

 

참고자료

[1] https://antamis.tistory.com/225