Получение нескольких аргументов для одного параметра с помощью getopts в Bash

Мне нужна помощь с getopts .

Я создал сценарий Bash, который при запуске выглядит следующим образом:

$ foo.sh -i env -d directory -s subdirectory -f file

Он работает правильно при обработке одного аргумента от каждого флага. Но когда я вызываю несколько аргументов из каждого флага, я не уверен, как извлечь информацию о нескольких переменных из переменных в getopts .

while getopts ":i:d:s:f:" opt
   do
     case $opt in
        i ) initial=$OPTARG;;
        d ) dir=$OPTARG;;
        s ) sub=$OPTARG;;
        f ) files=$OPTARG;;

     esac
done

После выбора параметров я хочу построить структуры каталогов из переменных

foo.sh -i test -d directory -s subdirectory -s subdirectory2 -f file1 file2 file3

Тогда структура каталогов будет

/test/directory/subdirectory/file1
/test/directory/subdirectory/file2
/test/directory/subdirectory/file3
/test/directory/subdirectory2/file1
/test/directory/subdirectory2/file2
/test/directory/subdirectory2/file3

Есть идеи?

49
задан codeforester 24 September 2017 в 12:48
поделиться