2011-09-28 121 views
1

getopts有一个--help参数吗?目前我使用这个代码来帮助功能Bash: - 帮助功能

#!/bin/bash 

PROGNAME=${0##*/} 
PROGVERSION=1.0 

usage() 
{ 
    cat << EO 
Prog description goes here. 

Usage: $PROGNAME 

Options: 
EO 
    cat <<EO | column -s\& -t 

-h|--help & show this output 
-v|--version & show version information 
EO 
} 

SHORTOPTS="hv" 
LONGOPTS="help,version" 

ARGS=$(getopt -s bash --options $SHORTOPTS \ 
    --longoptions $LONGOPTS --name $PROGNAME -- "[email protected]") 

eval set -- "$ARGS" 

while true; do 
    case $1 in 
     -h|--help) 
     usage 
     exit 0 
     ;; 
     -v|--version) 
     echo "$PROGVERSION" 
     exit 0 
     ;; 
     --) 
     shift 
     break 
     ;; 
     *) 
     shift 
     break 
     ;; 
    esac 
    shift 
done 

回答

1

bash的getopts的内置不支持双破折号前缀长选项名称。它只支持单字符选项。

+0

是的 - 这就是它的样子。其实我很想拥有'-h'和'--help'选项。你能推荐我一些东西吗? – Adobe

+1

看看[gnu getopt](http://software.frodo.looijaard.name/getopt/)或[shflags](http://code.google.com/p/shflags/) –

+0

@Adobe,@ Fredrik:'getopt'在过去的几年里一直很好(例子)(https://github.com/l0b0/tilde/blob/master/scripts/make-links.sh#L68))。我知道的唯一问题是它不是Bash的一部分 - 它是一个单独的包。 – l0b0