everymorning_
Shell Script - function + ffprobe 본문
Shell Script - Function + ffprobe
- ffmpeg 관련 소스를 bash script로 개발하는 중에 ffprobe 소스가 계속해서 반복 되고 있었다.
반복되는 소스를 제거하기 위해 ffprobe 관련 소스를 function으로 전부 전환했다.
선언
#!/bin/sh
# 1-1) 안되는 문법
function get_var1() { # 'function'은 쓸 필요가 없다
echo `returned value`
}
#### end 1-1
# 1-2) 실제 사용한 문법
get_var() {
echo `ffprobe ...`
}
### end 1-2
# 2-1) 되는 줄 알았던 문법.
get_var(var1) { # 실제 괄호 안에는 아무런 값이 들어갈 수 없다.
echo $var1 # 잘못 된 문법이므로 에러가 난다
}
### end 2-1
# 2-2) 실제로 인자를 전달 하는 방법
get_var() { # $#, $1, $2는 함수 내 지역변수처럼 사용 된다.
echo $# # 인자의 갯수를 integer로 return
echo $1 # 함수를 호출하는 과정에서 첫 번째 인자로 넘긴 값
echo $2 # 함수를 호출하는 과정에서 두 번째 인자로 넘긴 값
}
echo `get_var hello world` # 해석 > get_var 함수에 인자 값으로 hello와 world를 넘겨준다. (각각 $1, $2로 넘김)
# 출력 > 2 hello world
### end 2-2
Shell Script Function - Return Value
function을 통해 계산 된 값은 아래와 같은 문법으로 return 된다
# 1-1) echo를 이용한 return 방법
get_var() {
... some calc ...
echo `whoami` # 'return'을 이용 할 수도 있으나 내 경우에는 번거로워서 그냥 echo를 이용했다.
# echo와 같은 출력은 호출한 곳으로 전부 return 된다
}
echo `get_var`
# 출력 > root
### end 1-1
# 1-2 함수 밖의 변수를 이용한 return
SOME_VAR=""
get_var() {
... some calc ...
SOME_VAR="HELLO WORLD"
}
get_var
echo some var is $SOME_VAR
# 출력 > HELLO WORLD
### end 1-2
Comments