我有这段代码,当我在命令行中调用它时,它显示选项中的回显/每个选项中的回显/但 $OPTARG 未定义。我不知道为什么。
OPTIND=1
optm=
optl=
while getopts "ml:" opt
do
case "$opt" in
m)
optm=$OPTARG
echo "m was triggered"
;;
l)
moznostl=$OPTARG
echo "l was triggered"
;;
esac
done
shift "$((OPTIND-1))"
我的第二个问题是:
OPTIND=2
这可以用来从第二个参数开始吗?我的意思是它有效,但更进一步,这是做到这一点的合法方法。例如:
./project first -l second
所以它会跳过第一个参数并以 -l 开头?
答案1
你有这条线
while getopts "ml:" opt
这告诉 shellm
可能存在但不带参数,并且l
可能只带有一个参数。
我怀疑你打算使用getopts 'm:l' opt
.