getopts命令不接受需要参数的多个选项。

问题描述 投票:0回答:1

我在使用getopts命令时遇到了问题。

当我想使用一个需要相同参数的选项时,它在第一个需要参数的选项(例如-i)之后停止运行程序。 因此,当我想让它使用-id或-i-d选项时,它会在使用"-i "选项后停止运行while循环,而忽略-d选项。

我怎样才能让循环继续,并且让-d选项也执行呢?

传递参数的格式可以是。"-id参数 "或"-i -d参数"

我目前使用$p来抓取当前每个选项的最后一个参数,这是在dash中的linux ubuntu shell。

To make the code smaller and quicker to read:

for p do :; done

    echo arguments === $1 $2 $3 
    echo p = $p 
    while getopts ":hva:b:d:g:i:u:w:" opt; 
    do
        case "$opt" in

        i)
        checkdir $p
        fileinfo $p 
 ;;

        ***OTHER OPTIONS FOLLOW SIMILAR FORMAT***

        esac

    done
linux bash getopts
1个回答
0
投票

当我想使用一个需要参数的选项时,它在第一个需要参数的选项之后停止运行程序(例如-i)。所以当我想让它使用-id或-i-d选项时,它将在使用"-i "选项后停止运行while循环。

如果你 希望它采取的选项... -i -d,你必须(因为他们每个人都 需要一个参数)在每个选项后都提供一个参数,例如。… -i argument1 -d argument2 …. 用 -id-i -dd-d,分别取为选项的参数。

© www.soinside.com 2019 - 2024. All rights reserved.