Wie kann ich in Bash 3 (3.0 oder von mir aus 3.2.39+) ein Array
in einer anderen Variable speichern?
Bsp.:
#! /bin/bash
array=(ja nein doch)
anderes_array=$array
echo ${array[1]}
echo ${anderes_array[1]}
$ bash /tmp/artest.bash
nein
$
Dh. in "anderes_array" ist zumindest an index 1 nichts gespeichert (es
wurde nur index 0 von array übergeben).
Wie aber kann ich nun ein Array in einem anderen Array speichern?
Mit "${array[*]}" kann man sich ja eine Liste "ausgeben" lassen, bei
der die Elemente von $array durch das 1. Zeichen von $IFS getrennt
sind.
Und dann?
Oder ist's so einfach wie
anderes_array=${array[@]}
Gibt's dabei vlt. irgendwelche Risiken, wenn in $array "komische"
Werte gespeichert sind?
danke,
Michael
> Mit "${array[*]}" kann man sich ja eine Liste "ausgeben" lassen,
> bei der die Elemente von $array durch das 1. Zeichen von $IFS
> getrennt sind.
Fast richtig:
array=(ja nein doch)
anderes_array=("${array[@]}")
CU
Hauke
--
http://www.hauke-laging.de/ideen/
Wie können 59.054.087 Leute nur so dumm sein?
> Michael Schmarck schrieb am Donnerstag 04 September 2008 16:18:
>
>> Mit "${array[*]}" kann man sich ja eine Liste "ausgeben" lassen,
>> bei der die Elemente von $array durch das 1. Zeichen von $IFS
>> getrennt sind.
>
> Fast richtig:
>
> array=(ja nein doch)
> anderes_array=("${array[@]}")
Ich wollte eigentlich
anderes_array=(${array[@]})
geschrieben haben... gnarl...
Warum verwendest Du Anführungszeichen?
Michael
> Warum verwendest Du Anführungszeichen?
Weil man ansonsten [@] nicht bräuchte, sondern dasselbe bekäme wie
bei [*]. Und man möchte das Array ja zuverlässig und nicht nur
zufällig korrekt reproduzieren...
> Michael Schmarck schrieb am Donnerstag 04 September 2008 17:00:
>
>> Warum verwendest Du Anführungszeichen?
>
> Weil man ansonsten [@] nicht bräuchte, sondern dasselbe bekäme wie
> bei [*]. Und man möchte das Array ja zuverlässig und nicht nur
> zufällig korrekt reproduzieren...
:)
Hast ja recht *g*
Und wie ich festgestellt habe, klappt's auch nur mit den ". Genau wie
Du sagtest.
Danke nochmal,
Michael
Was ist eigentlich der Unterschied zwischen [*] und [@] bei Arrays ?
Gruss, jochen
> Was ist eigentlich der Unterschied zwischen [*] und [@] bei Arrays ?
| Any element of an array may be referenced using ${name[subscript]}.
| [...] If subscript is @ or *, the word expands to all members of
| name. These subscripts differ only when the word appears within
| double quotes. If the word is double-quoted, ${name[*]} expands to a
| single word with the value of each array member separated by the
| first character of the IFS special variable, and ${name[@]} expands
| each element of name to a separate word. When there are no array
| members, ${name[@]} expands to nothing.
(aus der bash-Manpage)