본문 바로가기
운영체제 OS

[Linux] 쉘스크립트에서 함수 리턴 해보기

by 까망 하르방 2023. 9. 13.
반응형

쉘 스크립트 함수 return

 Shell Script 에는 일반적인 프로그래밍 언어(C++, Java, Pyhton)와 같은

    함수 반환이 없다.

 정확히는 함수 return값이 EXIT_STATUS로 전달되며

    $?로 확인할 수 있다.

    ($? = 직전에 실행된 프로세스 반환 값)

• EXIT_STATUS는 일반적으로 "0 = 성공", "1~255 = 에러"

 

 

예시 코드

EXIT_STATUS 활용은 정수(0~255)만 전달 가능하다. 

사실상 에러 코드를 반환하는 것이다.

#/bin/bash

foo()
{
    return 123
}

foo

echo $?

쉘스크립트 함수 return exit status

 

 

스크립트 실행 결과는 "123" 이 출력된다.

그렇다면 정수가 아닌 문자열을 return 하면 어떻게 될까?

#/bin/bash

foo()
{
    return "hello"
}

foo

echo $?

쉘스크립트 함수 return exit status

 

"numeric argument required" 라는 에러 메시지를 출력하며

EXIT_STATUS $? 값으로  "2" 가 출력되었다.

 

일반적으로 아래와 같이 정의된다.

OK

if minor problems

if serious trouble


 

Sub Shell 활용

$와 () 안에 [명령어/쉘 스크립트/함수]를 넣으면

sub shell이 호출된다.

 

sub shell은 부모 shell의 변수나 값들을 가져오기 때문에

함수나 변수를 모두 사용 가능하다.

(sub shell 결과가 부모 shell에 영향을 주지는 않는다.)

#/bin/bash

foo()
{
    value="aaaa"
    echo ${value}
}

retval=$(foo)

echo "[1] = ${retval}" #sub shell에서 return 받은 변수
echo "[2] = ${value}" #sub shell에서 사용하던 변수

쉘스크립트 함수 return

 

 

#/bin/bash

foo()
{
    echo "bbbb"
    echo "cccc"
}

retval=$(foo)

echo "ret = ${retval}" #sub shell에서 return 받은 변수

쉘스크립트 함수 리턴 sub shell 예시

첫번째 echo 값이 return 되었다.


 

전역 변수 활용

아래와 같이 함수 밖에서 전역변수를 활용할 수도 있다.

#/bin/bash

retval=""

foo()
{
    retval="test"
}

foo

echo ${retval}

쉘스크립트 함수 return 전역변수 활용

반응형

'운영체제 OS' 카테고리의 다른 글

리눅스 Background 실행  (47) 2023.11.26
[쉘스크립트] 리눅스 파일 비교  (4) 2023.11.24
[Linux] 쉘스크립트 Shift 명령어  (0) 2023.08.27
리눅스 우분투(ubuntu)에서 LTS란?  (0) 2021.06.05
fsck (File System Check)  (0) 2021.02.27

댓글