Bashを使用してスクリプトを作成する!(関数)

Bashのスクリプトで、関数を使用する方法です。

関数の書式を確認する!

for文の書式は、以下になります。関数を定義して、関数名を記載して関数を呼び出します。

function 関数名() {
    #
}

関数名

以下のようにして、引数を指定して呼び出すことも可能です。

関数名 引数1 引数2 ・・・

サンプルのスクリプトを作成する!

主処理、引数のチェック、ログ出力を関数化してみます。以下、サンプルのスクリプトです。

$ cat ./sample_bash_07.sh 
#!/bin/bash
#
# Usage   : sample_bash_07.sh $1
# Version : 1.0
#
SHELL_NAME=`basename $0`
STA_MSG=Start!
END_MSG=End!
RET_CD=0
LOG_MSG="Message!"

# Functions
function write_log() {
    echo "${SHELL_NAME} : $@"
    /usr/bin/logger -ip local0.crit -t ${SHELL_NAME} $@ 
}

function check_arg_num() {
    if [[ $1 -ge 2 ]]; then
        LOG_MSG="Too many Arguments : $1"
        write_log "${LOG_MSG}"
        write_log "${END_MSG}"
        exit 9
    fi
}

function main() {
    if [[ -z "$1" ]]; then
        LOG_MSG="Default Message!"
    else
        LOG_MSG="$@"
    fi
    write_log "${LOG_MSG}"
}

# Start
write_log ${STA_MSG} 
    
# Check
check_arg_num $#

# Main
main $@

# End
write_log "${END_MSG}"
exit ${RET_CD}

# End of File

サンプルのスクリプトを実行してみる!

サンプルのスクリプトを実行してみます。引数なしのパターンです。

$ ./sample_bash_07.sh
sample_bash_07.sh : Start!
sample_bash_07.sh : Default Message!
sample_bash_07.sh : End!

引数1個のパターンです。

$ ./sample_bash_07.sh Hello
sample_bash_07.sh : Start!
sample_bash_07.sh : Hello
sample_bash_07.sh : End!

引数2個のパターンです。

$ ./sample_bash_07.sh Hello Everyone
sample_bash_07.sh : Start!
sample_bash_07.sh : Too many Arguments : 2
sample_bash_07.sh : End!

おわりに

Bashで関数を使用して、シェルを構造化してみました。

関連記事

関連書籍(Amazon)