Wie füge ich $ OPTARGs von einem Argument zu einem Array hinzu?

572
Harry

Also versuche ich, Werte aus einem Optarg zu einem Array hinzuzufügen. Ich habe:

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

Wenn ich das Skript ./script -a foo bar ausführe, werde ich mit zurückgegeben

foo 

Irgendeine Idee, wie man mehr Werte hinzufügt?

1
Haben Sie `./script -a foo -a bar` ausprobiert? Scott vor 10 Jahren 2
`var + = val` ist anhängender String,` ary + = (val) `ist anhängendes Array. glenn jackman vor 10 Jahren 1

1 Antwort auf die Frage

1
glenn jackman

$OPTARGShält das nächste Wort . Wenn Sie mehrere Werte wünschen

  • geben Sie -a valuemehrmals als @ Scott schlägt vor ,
  • Geben Sie in der Befehlszeile eine aus mehreren Wörtern bestehende Zeichenfolge an:

    ./script -a "foo bar baz" 

    dann im Skript

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

    Überprüfen, dass die Wörter separat hinzugefügt werden

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