簡體   English   中英

使用空格將參數傳遞給 KSH 腳本

[英]Passing argument to KSH script with spaces

我需要將字串傳遞給 KSH 腳本,如下所示

  $ script.sh -p "a b c"

我期待看到以下內容

  PARMS a b c 

但是當我嘗試打印出 $PARMS 的值時,只有“a”的第一個單詞會打印出來

    #!/bin/ksh

    ARGS=`getopt p: $*`

    set -- $ARGS

    for i
    do
       case "$i"
       in
        -p)     PARMS=$2; shift; shift;;
        --)     shift; break;;
    esac
    done

    echo "PARMS" "${PARMS}"

這是 ksh 中 getopts 用法的一個示例。

#!/bin/ksh

DEFAULT_SITE_NAME="a.b.c.d"

SITE_NAME=$DEFAULT_SITE_NAME

USAGE="[-author?Andre Gelinas]"
USAGE+="[-copyright?2020]"
USAGE+="[+NAME?getopts.sh --- Example of getopts]"
USAGE+="[+DESCRIPTION?Example of getopts usage in ksh.]"
USAGE+="[s:site]:?[site:=$DEFAULT_SITE_NAME?Site name.]"
USAGE+="[p:param]:[param?Parameters to test.]"
USAGE+=$'[+SEE ALSO?\aMAN Page\a(1)]'

while getopts "$USAGE" optchar ; do
    case $optchar in
    p)  PARAM_TO_PRINT=$OPTARG ;;
    s)  SITE_NAME=$OPTARG ;;
    esac
done

print "Paramters [p] : "$PARAM_TO_PRINT
print "Site [s] : "$SITE_NAME

它支持短 (-p) 和長 (--param=) 類型的選項。 -s 僅作為具有默認值的可選選項的示例。 它還支持 --help 和 --man 的用法。

例子 :

$ ./getopts.sh --param="a b c" --site=t.t.t.t
Paramters [p] : a b c
Site [s] : t.t.t.t
$ ./getopts.sh -p "a b c"
Paramters [p] : a b c
Site [s] : a.b.c.d

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM