ksh93은 +o 유형 옵션과 내장 getopts(1)를 지원합니까?

ksh93은 +o 유형 옵션과 내장 getopts(1)를 지원합니까?

getopt(3)ksh93은 Sun Microsystems가 2004년 봄에 , 및 에 대해 Bourne Shell도입한 것과 동일한 방식 으로 긴 옵션을 지원합니다 ksh88.

예를 들어 다음을 사용할 수 있습니다.

getopt(argc, argv, "V(version)");

--version짧은 옵션에 대한 긴 별칭을 만듭니다 -V.

그러나 Solaris libc는 ksh93사용되지 않지만 getopt(3)기호로 시작하는 짧은 옵션을 지원하기 위해 자체 구현이 내부적으로 사용됩니다 +.

ksh93내장된 구현과 iff 로 이 기능을 사용할 수 있는 방법이 있습니까 getopts(1)? 어떻게 작동합니까?

답변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반품.

관련 정보