관리 메뉴

everymorning_

Shell Script - function + ffprobe 본문

bash

Shell Script - function + ffprobe

dashhh 2019. 12. 18. 22:09

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