ksh93 是否支持 +o 类型选项及其内置的 getopts(1) ?

ksh93 是否支持 +o 类型选项及其内置的 getopts(1) ?

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还。

相关内容