개발/shell

[shell] return & exit

방푸린 2024. 9. 25. 08:21
반응형

return은 셸 스크립트에서 주로 함수 내에서 사용되며, 함수의 종료 상태(exit status)를 반환한다. 스크립트 자체의 종료 상태를 설정하거나 반환할 때는 exit를 사용한다. 

1. return의 기본 개념

  • return은 셸 스크립트 함수 내에서 함수의 종료 상태를 반환하는 데 사용
  • return은 함수 외부에서 사용할 수 없습니다. 함수 외부에서 return을 호출하면 구문 오류가 발생
  • return은 정수 값을 반환하며, 보통 0은 성공을, 0이 아닌 값은 오류 상태
#!/bin/bash

check_file() {
    if [[ -f "$1" ]]; then
        return 0  # 파일이 존재하면 0 반환 (성공)
    else
        return 1  # 파일이 존재하지 않으면 1 반환 (오류)
    fi
}

check_file "/etc/passwd"
if [[ $? -eq 0 ]]; then
    echo "File exists."
else
    echo "File does not exist."
fi

함수 외부에서는 exit 사용

#!/bin/bash

echo "Exiting with status 2."
exit 2  # 스크립트를 종료하고 종료 상태로 2를 반환

함수에서 반환된 값 사용

return은 숫자 값만 반환할 수 있기 때문에 문자열과 같은 데이터를 반환하려면 echo나 printf 명령을 사용해야 함.

#!/bin/bash

get_username() {
    local user_id=$1
    if [[ "$user_id" -eq 0 ]]; then
        echo "root"
        return 0
    else
        echo "non-root"
        return 0
    fi
}

username=$(get_username 0)
echo "Username: $username"  # 출력: "Username: root"

종료 상태와 관례

  • 0: 성공 (정상 종료)
  • 1-255: 오류 또는 특정 상태 코드 (예: 1은 일반적인 오류, 2는 사용법 오류 등)
  • 127: 명령어가 없을 때
  • 130: Ctrl + C에 의해 종료된 경우 (SIGINT)

return과 exit의 차이점

  • return:
    • 함수 내에서만 사용 가능.
    • 함수의 종료 상태를 반환.
    • 함수 외부에서 사용 시 오류 발생.
  • exit:
    • 스크립트 전체를 종료.
    • 스크립트의 종료 상태를 반환.
    • 함수 내에서도 사용할 수 있지만, 호출 시점에서 스크립트 전체가 종료됨.

Shell script의 return 문은 다른 프로그래밍 언어의 return 문과 다음과 같은 차이점이 있습니다:

1. 사용 대상

  • 프로그래밍 언어: 함수나 메서드에서 값을 반환하기 위해 return을 사용합니다. 예를 들어, Java, Python, JavaScript 등에서는 return을 통해 함수의 실행을 종료하고 값을 호출자에게 반환합니다.
  • Shell 스크립트: return은 주로 함수 내에서 사용되며, 반환 값은 함수의 종료 상태(exit status)를 나타내는 정수 값입니다. 이는 보통 0(성공) 또는 0이 아닌 값(실패 또는 오류)으로 표현됩니다.

2. 값의 의미

  • 프로그래밍 언어: return 뒤에 오는 값이 함수의 반환 값으로, 호출한 곳에서 이 값을 사용할 수 있습니다.
  • Shell 스크립트: return 뒤에 오는 값은 함수의 종료 상태(exit status)로 사용되며, 이 값은 보통 조건문(if, &&, || 등)에서 함수 호출의 성공 여부를 판단하는 데 사용됩니다.
 
728x90
반응형