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
'Dev > shell script' 카테고리의 다른 글
[shell script] json 값 추출하는 방법 (0) | 2023.11.10 |
---|---|
[Shell Script] 반복문 문법 (for, while) (0) | 2023.10.26 |
[Shell Script] 조건문 문법 (if로 시작해서 fi로 끝남) (0) | 2023.10.26 |