
Bashのスクリプトで、関数を使用する方法です。
関数の書式を確認する!
for文の書式は、以下になります。関数を定義して、関数名を記載して関数を呼び出します。
1 2 3 4 5 | function 関数名() { # } 関数名 |
以下のようにして、引数を指定して呼び出すことも可能です。
1 | 関数名 引数1 引数2 ・・・ |
サンプルのスクリプトを作成する!
主処理、引数のチェック、ログ出力を関数化してみます。以下、サンプルのスクリプトです。
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | $ 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 |
サンプルのスクリプトを実行してみる!
サンプルのスクリプトを実行してみます。引数なしのパターンです。
1 2 3 4 | $ ./sample_bash_07.sh sample_bash_07.sh : Start! sample_bash_07.sh : Default Message! sample_bash_07.sh : End! |
引数1個のパターンです。
1 2 3 4 | $ ./sample_bash_07.sh Hello sample_bash_07.sh : Start! sample_bash_07.sh : Hello sample_bash_07.sh : End! |
引数2個のパターンです。
1 2 3 4 | $ ./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)