IT/서버
쉘 스크립트 return에 관하여
1am_wish
2024. 6. 30. 21:23
728x90
반응형
쉘 스크립트의 return은 다른 언어와 다르게 작동한다는 것을 듣고 gpt의 도움을 받아 실습해보고자 했다!
우선, 쉘 스크립트의 함수에서 return은 값을 반환하지 않고 상태코드 (0~255)을 반환한다.
함수가 성공적으로 실행되었는지 나타나는데 쓰인다. 일반적으로 0은 성공, 0이 아닌 값은 실패를 의미한다.
고로 쉘 스크립트에서 return은 숫자를 반환해서 그냥 문자열을 넣으면 에러가 발생한다.
1. return 에 숫자를 넣을 경우
my_function() {
echo "Hello, World!"
return 0 # 성공을 의미
}
my_function
echo $? # 0이 출력됨
2. return 에 문자열을 넣을 경우
my_function() {
return "Hello, World!"
}
my_function
결과
./script.sh: line 2: return: Hello,: numeric argument required
그러나 쉘 스크립트로 무중단 배포를 구현할 때, nginx를 사용하여 새로운 버전의 애플리케이션을 배포하는 동안 문자열을 반환하고 싶을 수 있는 몇 가지 상황이 있을 수 있다.
예를 들어, 배포 과정에서 상태를 확인하고 싶다거나, 환경 설정 값을 반환한다거나 로그 메시지를 반환하는 등 !
이런 경우를 위해 문자열을 반환하는 방법이 몇가지 있다.
1. 명령 치환 (가장 흔하게 사용되는 방법)
my_function() {
local result="Hello, World!"
echo "$result"
}
result=$(my_function)
echo "$result" # "Hello, World!" 출력됨
2. 백틱 사용(구식)
my_function() {
local result="Hello, World!"
echo "$result"
}
result=`my_function`
echo "$result" # "Hello, World!" 출력됨
3. 전역 변수 사용
result=""
my_function() {
result="Hello, World!"
}
my_function
echo "$result" # "Hello, World!" 출력됨
코드가 간단할 때에는 가장 편할거같지만 함수가 좀만 복잡해지면,,, 안전하지 않을 것 같다.
728x90
반응형