
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)
