![](/img/trans.png)
[英]escape backticks - grave( ` ) when passing a argument to a ksh script in command line
[英]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.