반응형
안녕하세요. 이 글은 쉘 스크립트에서 문자열을 리턴하는 방법을 소개합니다.
영상으로도 만나 볼 수 있습니다.
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}"
반응형
'전공영역 공부 기록' 카테고리의 다른 글
운영체제별 컨테이너(엔진) 실행 원리 (0) | 2022.07.14 |
---|---|
m1 맥북 쿠버네티스 설치 (0) | 2022.07.13 |
PC에서 국민카드 교통비 내역 조회 (0) | 2022.07.10 |
argo workflow archive (0) | 2022.07.10 |
argo workflow CRD workflow 구조 (0) | 2022.07.10 |