在this one中删除了很少的帖子,但无法解决问题。我将4个参数传递给korn shell脚本。但它没有读到第4个arg。这是代码
#Get Input parameters
while getopts ":s:e:n:d" OPT
do
case $OPT in
(s) from=$OPTARG;;
(e) to=$OPTARG;;
(n) process=$OPTARG;;
(d) path=$OPTARG;;
(\?) printerror;;
esac
done
print "from $from" 1>&2;
print "to $to" 1>&2;
print "process $process" 1>&2;
print "path $path" 1>&2;
然后我像这样执行脚本
loaddat.ksh -s 1234 -e 1234 -n 1 -d /d/asa/
无论我做什么,路径值都不会被打印出来。尝试使用和不使用引号。甚至像xyz这样的字符串也是值。
答案 0 :(得分:2)
在选项字符串中,d
后需要冒号":s:e:n:d:"
因为在命令行中,期望选项'-d'后面跟着它的值,在这种情况下是一个路径。
如果字符串“d”中的选项字母后面没有“:”,则getopts不会检查其值。