如何使用 getopts ?

如何使用 getopts ?

能举个getopts的例子吗?      
正好以前写过一个
复制内容到剪贴板
代码:
[0 No.521 bash_codes $ ] cat ./getopts.sh
#! /bin/bash

# 测试 getopts 的用法
# 及与位置参数的关系

usage()
{
        echo 'basename $0' [-x] [-y] args
        exit 0
}

while getopts "xy:" options;do
        case $options in
                x)      echo "you enter -x as an opton";;
                y)      echo "you ecter -y as an optin"
                        echo "\$OPTARG is $OPTARG";;
                \?)     usage;;
        esac
done

[[ -z $1 ]] && usage

index=1
for agrs in "$@";do
        echo \$$index: $agrs
        (( index ++ ))
done
[0 No.522 bash_codes $ ]
      
another one:
引用:
-(user@host:tty)-(bash)-
[15480 0] $ cat getopts.sh
#! /bin/bash
# vi:set ts=8 sw=4 et sta:
#
# Author: Clark Wang (MSN: dearvoid AT 263 DOT net)
#
# $Date: 2005-11-01 21:57:57 +0800 (Tue, 01 Nov 2005) $
# $HeadURL: svn://apple/clark/void/trunk/bash/template.sh $
# $Revision: 316 $
#

echo "options:"
while getopts ":a:b:cd" opt; do
    case $opt in
        a|b)
            echo "  -$opt $OPTARG"
            ;;
        c|d)
            echo "  -$opt"
            ;;
        :)
            echo ">>> Error: '-$OPTARG' requires an argument"
            ;;
        ?)
            echo ">>> Error: '-$OPTARG' not supported"
            ;;
    esac
done

shift $((OPTIND - 1))
echo "other parameters:"
[ $# -gt 0 ] && echo "  $@"
-(user@host:tty)-(bash)-
[15480 0] $
      
bash 的 getopts 跟 C 中的 getopt(3) 用法基本相同      
十分感谢两位老朋友!      
如果想处理 --long-options,请用 getopt(1)