出力を入力へ

プログラミングに関する自分が考えた事を中心にまとめます

getoptの使い方

シェルスクリプトで引数処理をしてくれるgetoptが

どうも上手く使えなかったので整理してまとめ。

既に似た情報は山程ネットにあふれているけど

どうも一目でわからなかったので書き直し。

とりあえず使える用なので
他のオプションとかgetoptsとの区別とかは無視。

#!/bin/sh

########################################

GETOPT_ARG_SHORT="acd:e:"
GETOPT_ARG_LONG="one,two,three:,four:"

########################################

getopt_template(){
    OPT=`getopt -o ${GETOPT_ARG_SHORT} -l ${GETOPT_ARG_LONG} -- $*`
    echo "opt=${OPT}"
    
    while [ -n "$1" ];do
	case $1 in
	    -a) opt_a=1;shift;;
	    -b) opt_b=1;shift;;
	    -c) opt_c=$2;shift 2;;
	    -d) opt_d=$2;shift 2;;
	    --one) opt_one=1;shift;;
	    --two) opt_two=1;shift;;
	    --three) opt_three=$2;shift 2;;
	    --four) opt_four=$2;shift 2;;
	    --) shift;break;;
	    *) echo "error";return 1;;
	esac
    done

    return 0
}

getopt_template $@
status=$?

if [ ${status} -ne 1 ] ;then
    echo "a="${opt_a}
    echo "b="${opt_b}
    echo "c="${opt_c}
    echo "d="${opt_d}
    echo "one="${opt_one}
    echo "two="${opt_two}
    echo "three="${opt_three}
    echo "four="${opt_four}
fi