SW/리눅스

Linux : Bash : Exit (종료) 명령어, 코드, 예제, 사용 방법

얇은생각 2022. 10. 8. 07:30
반응형

Bash 스크립트를 작성할 때 특정 조건이 충족될 때 스크립트를 종료하거나 명령의 종료 코드에 따라 작업을 수행해야 하는 경우가 많습니다.

이 문서에서는 Bash exit 기본 제공 명령과 실행된 명령의 종료 상태에 대해 설명합니다.

 

 

Linux : 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 명령은 지정된 상태의 셸을 종료하는 데 사용됩니다.

 

 

 

참조

https://linuxize.com/post/bash-exit/

반응형