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
51
52
53
54
#!/usr/bin/sh

OPT_o='OFF'
OPT_q='OFF'
OPT_d='0'
OPTERR=0
while getopts ":oqd:" name
do
    case $name in
        [oq])
            eval "OPT_$name='ON'"
            ;;
        d)
            OPT_d=$OPTARG
            echo "$OPTARG" | grep -e '[012]' >/dev/null 2>&1
            if [ $? -ne 0 ] ; then
                echo '変な値: ' "[$OPT_d]"
                echo '書式:cmdopt -o [-q] [-d{0|1|2}] 文字列 [文字列 ...]'
                exit 1
            fi
            ;;
        [:?])
            echo '変なオプション: ' "[$name]"
            echo '書式:cmdopt -o [-q] [-d{0|1|2}] 文字列 [文字列 ...]'
            exit 1
            ;;
    esac
done
shift $(($OPTIND-1))
if [ $# -eq 0 ]; then
    echo '文字列がない'
    echo '書式:cmdopt -o [-q] [-d{0|1|2}] 文字列 [文字列 ...]'
    exit 1
fi
if [ $OPT_o = "OFF" ]; then
    echo '-oがない'
    echo '書式:cmdopt -o [-q] [-d{0|1|2}] 文字列 [文字列 ...]'
    exit 1
fi
echo '[オプション情報]'
echo 'o(output):' "$OPT_o"
echo 'q(quote):'  "$OPT_q"
echo 'd(debug):'  "$OPT_d"
echo ''
echo '[パラメータ情報]'
echo '指定数:' "$(($#-1))"
C=0
while [ $C -lt $# ];
do
    let C=C+1
    echo "$C:$1" 
    shift
done
#EOF