BASH getopts OPTARG 未定义

BASH getopts OPTARG 未定义

我有这段代码,当我在命令行中调用它时,它显示选项中的回显/每个选项中的回显/但 $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.

相关内容