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)