我使用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]
$发布于 2013-09-29 06:39:40
您似乎正在使用ast getopts语法。
我通过将[-]添加到用法字符串的前面来实现这一点:
USAGE+="[-][w:week?print the whole week]"也许需要使用[-]来解决选项字符串中的任何歧义。
https://stackoverflow.com/questions/19062116
复制相似问题