raynstard #7616(2008/09/10 08:42 GMT) [ Other ] Rating0/0=0.00
もう一つPOSIX-shのものを投稿 evalって便利ですよね。
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
Rating0/0=0.00-0+
[ reply ]
raynstard
#7616()
[
Other
]
Rating0/0=0.00
#!/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 #EOFRating0/0=0.00-0+
[ reply ]