Передача нескольких аргументов одному флагу в 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 можно было ставить в любое место. Учитывая, что количество аргументов, которые передаются флагу может быть различным и заранее неизвестно.