オレオレシェルをつくるなら以下のテンプレートを使う。
#!/usr/bin/env zsh
# Settings
## スクリプト名
script=$(basename $0)
## バージョン
version="v1.0"
## debugモード(デフォルトoff)
debug=0
## 引数の数(オプションを除く)
args_num=1
# usageを表示
function show_usage_and_exit() {
cat <<EOF
$script is a tool for ...
Usage:
$script [<options>] [command]
Options:
-d execute debug mode
-v print $(basename ${0}) version
-h print this
EOF
exit 0
}
# バージョン表示
function show_version_and_exit() {
echo $version
exit 0
}
# メイン関数
function main() {
chk_args $@
echo $1
exit 0
}
# debugログ出力
function log() {
if [ $debug -eq 1 ]; then
echo "[DEBUG]" $@
fi
}
# 引数チェック
function chk_args() {
if [ $# -ne $args_num ]; then
log "argment check error"
echo "Too meny arguments"
echo "see help:"
echo " ${script} -h"
exit 1
fi
}
while getopts "vhd" OPT
do
case $OPT in
v)
show_version_and_exit
;;
h)
show_usage_and_exit
;;
d)
debug=1
;;
\?)
show_usage_and_exit
;;
esac
done
# 引数リストからオプションを除外する
shift `expr $OPTIND - 1`
# メイン関数の実行
main $@