1

Поэтому я пытаюсь добавить значения из optarg в массив. У меня есть:

arrays=()
while getopts a: args; do
  case $args in
    a) arrays+=$OPTARG;;
  esac
done
echo $arrays[@]

Когда я запускаю скрипт, ./script -a foo bar, я получаю

foo

Любая идея, как добавить больше значений?

1 ответ1

1

$OPTARGS содержит следующее слово. Если вы хотите несколько значений

  • укажите -a value несколько раз, как подсказывает @scott
  • укажите строку из нескольких слов в кавычках в командной строке:

    ./script -a "foo bar baz"
    

    затем в сценарии

    array+=($OPTARG)   # OPTARG is **unquoted**
    

    Проверка того, что он добавляет слова отдельно

    a=(one two three)
    value="four five six"
    a+=($value)
    echo ${#a[@]}        # prints 6
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .