전공영역 공부 기록

쉘스크립트 문자열 리턴

악분 2022. 7. 11. 00:31
반응형

안녕하세요. 이 글은 쉘 스크립트에서 문자열을 리턴하는 방법을 소개합니다. 

영상으로도 만나 볼 수 있습니다.

https://youtu.be/m2EWVVbIwsw

 

1. 문자열을 리턴하면?

쉘스크립트 함수에서 문자열을 리턴하면 오류가 발생합니다. 제가 사용한 코드는 아래와 같습니다.

#!/bin/bash

function helloworld () {
  return "helloworld"
}

helloworld

 

오류 내용은 아래 그림과 같습니다.

 

2. 왜 오류가 발생할까?

쉘스크립트 함수는 문자열 리턴을 할 수 없습니다. 정수만 리턴할 수 있고 0~255범위만 리턴할 수 있습니다. 만약 0~255범위 밖의 값을 리턴하면 이상한 정수로 변경되어 리턴됩니다.

 

쉘스크립트의 함수리턴은 종료상태코드를 의미합니다. 종료코드 범위가 0~255이고 각 값마다 의미를 가지고 있습니다. 예를 들어 0은 정상종료입니다. 정수만 리턴할 수 있어서 문자열을 리턴할 경우 오류가 발생했었습니다.

 

3. 문자열 리턴 방법

안타깝게도 return으로는 해결할 수 없고 다른 방법을 응용해야합니다.

 

3.1 전역변수 사용

리턴하는 대신 전역변수를 사용하는 방법입니다. 장점은 구현이 간단하지만, 전역변수를 사용하므로 다른 곳에서 사용할 때 주의해야 합니다.

#!/bin/bash

a=""

function helloworld() {
  a="helloworld"
}

echo "a: ${a}"
helloworld
echo "a: ${a}"

 

 

3.2 stdout 활용

stdout으로 리턴할 값을 출력하고, subshell을 이용하여 변수로 저장하는 방법입니다. 전역변수를 사용하지 않아서 주의할 부분이 없어지지만, 디버깅할 때 매우 불편합니다. stdout으로는 리턴할 값만 출력해야하므로 log등 사용을 주의해야 합니다.

#!/bin/bash

function helloworld() {
  echo "helloworld"
}

a=$(helloworld)
echo "a: ${a}"
반응형