2013-09-28 42 views
0

我正在使用getopts将选项传递给ksh脚本,但这些选项未被getopts识别。ksh getopts未知选项错误

下面是使用字符串我给getopts的

#OPTIONS 
USAGE+="[w:week?print the whole week]" 
USAGE+="[b:before?print the month up to and including the requested day]" 
USAGE+="[a:after?print the month starting from the requested day to the end of the month or week]" 
USAGE+="[d:day]#[day:=$(date "+%d"|sed 's/^0*//')?requested day]{[1-31]}" 
USAGE+="[m:month]#[month:=$(date "+%m"|sed 's/^0*//')?month of requested day]{[1-12]}" 
USAGE+="[y:year]#[year:=$(date "+%Y")?year of requested day.]" 

的选项的一部分,这里是我的getopts的阻挡

while getopts "$USAGE" optchar 
do 
    echo $optchar 
    case $optchar 
    in 
      w)  boolWEEK=true; 
        ;; 

      b)  boolBEFORE=true; 
        ;; 
      a)  boolAFTER=true; 
        ;; 
      d)  day=$OPTARG 
        ;; 
      m)  month=$OPTARG 
        ;; 
      y)  year=$OPTARG 
        ;; 
      esac 
done 

下面是一个选项,运行该脚本的输出

$ ksh now.ksh -a 
now.ksh: -a: unknown option 
? 
Usage: now.ksh [-wba] [-d day] [-m month] [-y year] 
$ 

回答

0

您似乎正在使用 ast getopts语法。

我加入[-]的用法字符串的前得到这个工作:

USAGE+="[-][w:week?print the whole week]" 

也许[-]需要解决的选项字符串任何歧义。