반응형
쉘 스크립트 함수 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 $?
스크립트 실행 결과는 "123" 이 출력된다.
그렇다면 정수가 아닌 문자열을 return 하면 어떻게 될까?
#/bin/bash
foo()
{
return "hello"
}
foo
echo $?
"numeric argument required" 라는 에러 메시지를 출력하며
EXIT_STATUS $? 값으로 "2" 가 출력되었다.
일반적으로 아래와 같이 정의된다.
0 → OK
1 → if minor problems
2 → 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에서 사용하던 변수
#/bin/bash
foo()
{
echo "bbbb"
echo "cccc"
}
retval=$(foo)
echo "ret = ${retval}" #sub shell에서 return 받은 변수
첫번째 echo 값이 return 되었다.
전역 변수 활용
아래와 같이 함수 밖에서 전역변수를 활용할 수도 있다.
#/bin/bash
retval=""
foo()
{
retval="test"
}
foo
echo ${retval}
반응형
'운영체제 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 |
댓글