bash 쉘에서도 일반 프로그래밍 에서처럼 리턴을 이용 할 수 있다. 그러나, 프로그램 언어에서 사용하는 함수에서의 return XX;  와 같이 사용 할 수 있지는 않다.

 

일반적으로 쉘 명령어가 성공적으로 실행 되었을 경우, 0을 리턴하며 실패 하였을 경우 에러 코드로 해석될 수 있는 0이 아닌값을 리턴 한다.  또한, 유사하게 함수나 명령어 자신도 종료 상태를 돌려준다.


스크립트 함수나 스크립트에서 가장 마지막에 실행된 명령어가 종료 상태를 결정 하게 된다.
스크립트에서 exit nnn 이라고 하면 nnn이라는 종료 상태를 쉘에게 전달 한다.

 

$? 는 제일 마지막 명령어의 종료 상태를 볼 수 있다. 함수가 리턴한 다음에 $?라고 하면 함수의 마지막 명령어의 종료 상태를 알려준다.  

참고: 매개변수 없이 그냥 exit로 끝났을 경우에는, 마지막에 실행된 명령어(exit 자신은 빼고)의 종료 상태가 스크립트의 종료 상태로 된다.

 

다음의 예를 살펴 봄으로써 종료 상태에 대하여 알 수 있다.

 

종료 상태 알아 보기

ex1.sh
---------------------------------------
#!/bin/bash

echo "exit status"
echo $?

aaaaaaaa     #  존재 하지 않는 명령어
echo $?

exit 10
----------------------------------------

===  실행 결과 ====
$ ./ex1.sh
exit status print
0
./ex1.sh: line 6: aaaaaaaa: command not found
127
$ echo $?
10


비정상적인 함수 리턴값
ex2.sh
---------------------------------------
#!/bin/bash

fa_function ()
{
  echo "funciton"
  aaaaaaaa     #  존재 하지 않는 명령어
}

fa_function
echo $?

exit 0
----------------------------------------

===  실행 결과 ====
$ ./ex2.sh
funciton
./ex2.sh: line 6: aaaaaaaa: command not found
127


정상적인 함수 리턴값
ex3.sh
---------------------------------------
#!/bin/bash

fa_function ()
{
  echo "funciton"
}


fa_function
echo $?

exit 0
----------------------------------------

===  실행 결과 ====
$ ./ex3.sh
function
0


이상으로 bash 에서 종료 및 종료 상태에 대하여 알아 보았다.