티스토리 뷰
어플리케이션 빌드 및 배포를 할 때는 sell script 를 많이 사용하는 편입니다.
매일 그 때 그 때 중구난방으로 작성한 스크립트를 볼 때마다 항상 제대로 작성해야겠다라는 생각을 했었는데, 기회가 닿아 함수로 기능을 구분하고 input과 return 을 잘 사용해보려 하다가 멘탈이 깨질뻔 했지요.
여기서는 쉘 스크립트 함수를 사용할 때 인자를 넘겨받는 방법과 리턴하는 방법에 대해 알아보겠습니다.
- 인자 넘기고 받는 방법
- 리턴하고 받는 방법
인자 남기고 받는 방법
우선은 쉘 스크립트 함수 형태를 보겠습니다.
function sample_func() {
...
}
# or
sample_func2() {
}
쉘 스크립트에서 함수는 위 처럼 사용합니다.
함수 호출 방법:
sample_func
단순하죠? 그럼 인자를 넘겨보겠습니다.
sample_func hello world
쉘스크립트는 다른 언어들과 다르게 ()
를 사용하지 않더군요. 띄어쓰기 단위로 인자를 구분합니다. 이걸 이해하시면 xargs
명령도 금방 이해 되실거예요.
그럼 인자를 함수 내부에서 어떻게 받아서 사용하지는 볼게요.
function sample_func() {
arg1=$1
arg2=$2
echo "${arg1}, ${arg2}"
}
sample_func hello world
# hello world
저 하나의 함수는 하나의 쉘 스크립트 파일 이라고 생각하시면 됩니다.
여기서 $0
은 무엇일까요? 바로 함수 이름이 되겠습니다.
리턴하고 받는 방법
쉘 스크립트에서는 함수로부터 리턴받는 방법이 2가지 정도 있는거 같아요.
하나는 echo 를 통해
다른 하나는 return 이나 exit 를 통해 받을 수 있어요.
echo 를 통해 리턴받기
echo 는 커맨드라인에 출력하기 위한 도구로 알고 있는데요, 이것을 응용하면 return 과 같은 효과를 볼 수 있어요.
function sample_func() {
arg=$1
echo "${arg}OK"
}
returnValue=$(sample_func test)
echo "${returnValue}"
## testOK 가 출력되요
sample_func test
를 보면 명령어 실행하는것과 똑같아요.
sample_func.sh test
라는 거죠.
주의! echo 가 여러개 호출되면 여러개를 받아와요. echo 가 여러번 실행되지 않도록 주의해서 사용해야합니다.
return 이나 exit 를 통해 리턴받기
echo
와는 다르게 return
이나 exit
가 실행되면 해당 함수를 빠져나오는 효과도있어요.
function sample_func2() {
$arg=$1
return $(($1 + 1))
}
sample_func2 1
result=$?
echo ${result}
# 2
$?
는 방금 전에 실행된 결과 값을 확인 할 수 있어요. 저 위에서 return
대신에 exit
를 사용해도 결과는 동일해요.
단, exit
는 현재 스크립트를 종료해버려요. 애는 다른 프로세스에서 실행될 때 왜 종료됐는지 확인하게 할 때 사용되요.
반대로 return
은 해당 함수만 종료되요.
'프로그래밍언어 > 리눅스' 카테고리의 다른 글
centos locale 에 en_US.utf8 추가하기 (0) | 2017.05.30 |
---|---|
rsync snapshot & backup (0) | 2017.02.22 |
특정 패턴 경로의 디렉토리 시간별 제거 (0) | 2017.01.10 |
SSH 접속 지연(느림) 해결 (0) | 2017.01.06 |
[PHP-FPM] 최대 자식 개수 구하기 (0) | 2017.01.03 |
- Total
- Today
- Yesterday
- mariadb
- 가 부터 힣
- bash
- centOS
- graceful shutdown
- swapfile
- 소프트웨어 엔지니어링
- director.js
- ssh
- 채굴량
- 워드프레스
- php
- backup
- 소프트웨어 공학
- 무정지서비스배포
- headless browser
- pk
- 파이썬
- NGINX
- centOS7
- select
- 자바스크립트
- 소공
- 리눅스
- ELECTRON
- Python
- javascript
- GROUP BY
- flask-simpleldap
- MySQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |