개발/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
반응형