Bash getopts放弃了最后一个参数

Ski*_*les 2 unix bash shell scripting getopts

所以,我正在尝试使用bash的内置getopts来处理参数处理,除非我得到一个奇怪的结果.这是我的测试脚本;

#!/bin/sh

HOST=
OWNER=
GROUP=

while getopts "h:o:g" OPTION;
  do
    case $OPTION in
    h)
      HOST=$OPTARG
      ;;
    o)
      OWNER=$OPTARG
      ;;
    g)
      GROUP=$OPTARG
      ;;
  esac
done

echo "$HOST - $OWNER:$GROUP"
Run Code Online (Sandbox Code Playgroud)

然而,当我使用这个运行脚本时;

./test.sh -h test.host.com -o skittles -g whatever
Run Code Online (Sandbox Code Playgroud)

我的最后一个arg从未被拉入或被丢弃.我的回声结果是;

test.host.com - skittles:
                         ^ where's my group value? O.o
Run Code Online (Sandbox Code Playgroud)

有谁知道会造成什么?

谢谢.

Ouk*_*uki 7

看起来您希望-g有一个参数,但在您的选项声明中,没有与您相关的":" -g.

你应该这样:

h:o:g:
Run Code Online (Sandbox Code Playgroud)