是否可以将 getopts 与位置参数混合使用?

2024-04-19

我想设计一个 shell 脚本作为几个脚本的包装器。我想指定参数myshell.sh using getopts并将其余参数以相同的顺序传递给指定的脚本。

If myshell.sh执行方式如下:

myshell.sh -h hostname -s test.sh -d waittime param1 param2 param3

myshell.sh param1 param2 -h hostname param3 -d waittime -s test.sh

myshell.sh param1 -h hostname -d waittime -s test.sh param2 param3

以上所有内容都应该能够调用

test.sh param1 param2 param3

是否可以使用选项参数 myshell.sh 并将剩余参数发布到底层脚本?


我想做类似OP的事情,我找到了我需要的相关信息here https://web.archive.org/web/20130927000512/http://www.devhands.com/2010/01/handling-positional-and-non-positional-command-line-arguments-from-a-shell-script/ and here https://web.archive.org/web/20170203212120/http://www.ibm.com/developerworks/opensource/library/l-bash-parameters/index.html

本质上,如果你想做类似的事情:

script.sh [options] ARG1 ARG2

然后得到这样的选择:

while getopts "h:u:p:d:" flag; do
case "$flag" in
    h) HOSTNAME=$OPTARG;;
    u) USERNAME=$OPTARG;;
    p) PASSWORD=$OPTARG;;
    d) DATABASE=$OPTARG;;
esac
done

然后你可以得到这样的位置参数:

ARG1=${@:$OPTIND:1}
ARG2=${@:$OPTIND+1:1}

更多信息和详细信息可通过上面的链接获得。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以将 getopts 与位置参数混合使用? 的相关文章

随机推荐