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
반응형