Shell getopt ошибка первого параметра - PullRequest
0 голосов
/ 26 апреля 2018

Запустив следующий код, я обнаружил, что 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 голосов
/ 26 апреля 2018

Кажется, вам нужно указать короткие опции для getopt, иначе это (IMO) испортит синтаксический анализ.From man getopt:

Если эта опция не найдена, первый параметр getopt, который не начинается с '-' (и не является аргументом опции), используется в качестве строки коротких опций.

Работает:

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