运行以下代码,我发现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
答案 0 :(得分:1)
似乎你需要指定getopt
的短选项,否则它(IMO)会弄乱解析。来自man getopt
:
如果找不到此选项,则getopt的第一个参数不以' - '开头。 (并且不是选项参数)用作短选项字符串。
这有效:
$ getopt --options '' --longoptions hostip:,hostport: -n 'javawrap' -- --hostip foo --hostport bar
--hostip 'foo' --hostport 'bar' --