getopt(3)
ksh93 支持长选项,与 Sun Microsystems 在 2004 年春季为、Bourne Shell
和引入的方式相同ksh88
。
例如,您可以使用:
getopt(argc, argv, "V(version)");
--version
为短选项建立长别名-V
。
但是,ksh93
不使用getopt(3)
Solaris libc,而是使用自己的实现,该实现在内部用于支持以符号开头的短选项+
。
有没有办法通过ksh93
内置getopts(1)
实现和 iff 使用此功能,它是如何工作的?
答案1
这是我尝试过的 getopts 使用示例
#!/bin/ksh
#Default value
ONE=123
TWO=456
# getopts configuration
USAGE="[-author?Andre Gelinas <[email protected]>]"
USAGE+="[-copyright?2018]"
USAGE+="[+NAME?TestGetOpts.sh]"
USAGE+="[+DESCRIPTION?Try out for GetOps]"
USAGE+="[o:one]#[one:=$ONE?First.]"
USAGE+="[s:second]#[second:=$TWO?Second.]"
USAGE+="[t:three]:[three?Third.]"
USAGE+=$'[+SEE ALSO?\aman\a(1), \aGetOpts\a(1)]'
while getopts "$USAGE" optchar ; do
case $optchar in
o) ONE=$OPTARG ;;
s) TWO=$OPTARG ;;
t) THREE=$OPTARG ;;
esac
done
print "ONE = "$ONE
print "TWO = "$TWO
print "THREE = "$THREE
您可以使用 --one 或 -o。使用 --man 或 --help 也可以。另外 -o 和 -s 仅是数字,但 -t 可以接受任何内容。顺便说一句,您可能想看看https://docstore.mik.ua/orelly/unix3/korn/appb_11.htm还。