Shell getopt第一个参数错误

时间:2018-04-26 07:53:45

标签: shell getopt

运行以下代码,我发现host_ip为空,我不知道原因是什么?

TEMP=`getopt --long hostip:,hostport: -n 'javawrap' -- "$@"`

if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi

eval set -- "$TEMP"

host_ip=
host_port=

while true; do
  case "$1" in
    --hostip ) host_ip="$2"; shift 2;;
    --hostport ) host_port="$2"; shift 2 ;;
    * ) break ;;
  esac
done

echo $host_ip
echo $host_port

enter image description here

1 个答案:

答案 0 :(得分:1)

似乎你需要指定getopt的短选项,否则它(IMO)会弄乱解析。来自man getopt

  

如果找不到此选项,则getopt的第一个参数不以' - '开头。 (并且不是选项参数)用作短选项字符串。

这有效:

$ getopt --options '' --longoptions hostip:,hostport: -n 'javawrap' -- --hostip foo --hostport bar
 --hostip 'foo' --hostport 'bar' --