Как бы я добавил $ OPTARG из одного аргумента в массив

543
Harry

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

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

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

foo 

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

1
Вы пробовали `./script -a foo -a bar`? Scott 11 лет назад 2
var + = val` - добавление строки, ary + = (val) `добавление массива. glenn jackman 11 лет назад 1

1 ответ на вопрос

1
glenn jackman

$OPTARGS holds the next word. If you want multiple values

  • specify -a value multiple times as @scott suggests
  • provide a multi-word string in quotes on the command line:

    ./script -a "foo bar baz" 

    then, in the script

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

    Checking that it adds the words separately

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

Похожие вопросы