Bash getopts放弃了最后一个参数

时间:2012-03-06 14:43:18

标签: bash shell unix 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"

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

./test.sh -h test.host.com -o skittles -g whatever

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

test.host.com - skittles:
                         ^ where's my group value? O.o

有谁知道会造成什么?

感谢。

2 个答案:

答案 0 :(得分:6)

您希望-g有一个参数,但在您的选项声明中,没有与您的-g相关的“:”。

你应该有这个:

h:o:g:

答案 1 :(得分:3)

您的选项字符串在g。

之后缺少: