Bash 스크립트를 작성할 때 특정 조건이 충족될 때 스크립트를 종료하거나 명령의 종료 코드에 따라 작업을 수행해야 하는 경우가 많습니다.
이 문서에서는 Bash exit 기본 제공 명령과 실행된 명령의 종료 상태에 대해 설명합니다.
종료 상태
각 셸 명령은 종료 시 성공 또는 실패에 관계없이 종료 코드를 반환합니다.
일반적으로 종료 코드가 0이면 명령이 성공적으로 완료되었음을 나타내고 0이 아니면 오류가 발생했음을 나타냅니다.
특수 변수 $?는 마지막으로 실행된 명령의 종료 상태를 반환합니다.
date &> /dev/null
echo $?
# 0
날짜 명령이 성공적으로 완료되었으며 종료 코드가 0입니다.
존재하지 않는 디렉토리에서 ls를 실행하려고 하면 종료 코드가 0이 아닙니다.
ls /nonexisting_dir &> /dev/null
echo $?
# 2
상태 코드를 사용하여 명령이 실패한 이유를 확인할 수 있습니다. 각 명령의 man 페이지에는 종료 코드에 대한 정보가 포함되어 있습니다.
다중 명령 파이프라인을 실행할 때 파이프라인의 종료 상태는 마지막 명령의 종료 상태입니다.
sudo tcpdump -n -l | tee file.out
echo $?
위의 예에서 echo $?는 tee 명령의 종료 코드를 인쇄합니다.
Bash 종료 명령
종료 명령은 상태가 N인 셸을 종료합니다. 구문은 다음과 같습니다.
exit N
N이 지정되지 않은 경우 종료 상태 코드는 마지막으로 실행된 명령의 코드입니다.
셸 스크립트에서 사용할 경우 exit 명령에 인수로 제공된 값이 exit 코드로 셸에 반환됩니다.
예
명령의 종료 상태는 다음과 같은 조건부 명령에서 사용할 수 있습니다. 다음 예에서는 파일 이름에 "검색 문자열"이 있는 경우 grep가 0으로 종료됩니다(쉘 스크립팅에서 true를 의미합니다.
if grep -q "search-string" filename then
echo "String found."
else
echo "String not found."
fi
&&(AND) 또는 ||(OR)로 구분된 명령 목록을 실행할 때 명령의 종료 상태에 따라 목록의 다음 명령이 실행될지 여부가 결정됩니다. 여기서 mkdir 명령은 cd가 0을 반환하는 경우에만 실행됩니다.
cd /opt/code && mkdir project
스크립트가 매개 변수를 지정하지 않고 종료로 끝나는 경우 스크립트 종료 코드는 스크립트에서 마지막으로 실행된 명령의 종료 코드입니다.
# ~/script.sh
#!/bin/bash
echo "doing stuff..."
exit
출구만 사용하는 것은 출구 $? 또는 출구를 생략하는 것과 같습니다.
다음은 루트가 아닌 사용자가 호출할 경우 스크립트를 종료하는 방법을 보여 주는 예입니다.
#!/bin/bash
if [[ "$(whoami)" != root ]]; then
echo "Only user root can run this script."
exit 1
fi
echo "doing stuff..."
exit 0
스크립트를 루트로 실행하면 종료 코드가 0이 됩니다. 그렇지 않으면 스크립트가 상태 1로 종료됩니다.
각 셸 명령은 종료 시 종료 코드를 반환합니다. exit 명령은 지정된 상태의 셸을 종료하는 데 사용됩니다.
참조
'SW > 리눅스' 카테고리의 다른 글
Linux : Ubuntu 20.04 : Spotify 설치 방법, 예제, 명령어 (0) | 2022.10.10 |
---|---|
Linux : Ubuntu 20.04 : PHP 설치 방법, 예제, 명령어 (0) | 2022.10.09 |
Linux : Ubuntu 20.04 : Skype 설치 방법, 예제, 명령어 (1) | 2022.10.07 |
Linux : Ubuntu 20.04 : Redis 설치, 구성 방법, 예제, 명령어 (0) | 2022.10.06 |
Linux : Bash : stderr에서 stdout로 리다이렉트 방법, 예제, 명령어 (0) | 2022.10.05 |