Передача нескольких аргументов одному флагу в bash

Мне необходимо передавать несколько аргументов в один флаг в bash. Я сделал это следующим образом.

TEMP=$(getopt -o '' --long arg1:,arg2:,arg3: -- "$@")

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

eval set -- "$TEMP"

echo "$TEMP"

while true; do
  case "$1" in
    arg1 ) val1="$2"; shift 2 ;;
    arg2 ) val2="$2"; shift 2 ;;
    arg3 ) val3="$@"; shift "$#" ;;
    * ) break ;;
  esac
done

Но с этим кодом несколько проблем, во-первых, при выводе echo появляется лишние символы --, которые потом идут в аргументы. И arg3 можно ставить только последним. Вопрос в следующем, есть ли способ сделать так, чтобы arg3 можно было ставить в любое место. Учитывая, что количество аргументов, которые передаются флагу может быть различным и заранее неизвестно.


Ответы (0 шт):