2

所以,我正在尝试使用 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

有谁知道这是什么原因造成的?

谢谢。

4

2 回答 2

7

您似乎希望-g有一个论点,但在您的选项声明中,没有与您的-g.

你应该有这个:

h:o:g:
于 2012-03-06T14:46:50.347 回答
3

:您的选项字符串在 g 之后缺少 a 。

于 2012-03-06T14:46:03.627 回答