Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

bash: Array Variable in anderer Variable speichern

1 view
Skip to first unread message

Michael Schmarck

unread,
Sep 4, 2008, 10:18:10 AM9/4/08
to
Hi!

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

Hauke Laging

unread,
Sep 4, 2008, 10:21:25 AM9/4/08
to
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[@]}")


CU

Hauke
--
http://www.hauke-laging.de/ideen/
Wie können 59.054.087 Leute nur so dumm sein?

Michael Schmarck

unread,
Sep 4, 2008, 11:00:46 AM9/4/08
to
Hauke Laging <3q2...@hauke-laging.de> wrote:

> 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

Hauke Laging

unread,
Sep 4, 2008, 11:07:46 AM9/4/08
to
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...

Michael Schmarck

unread,
Sep 5, 2008, 2:25:54 AM9/5/08
to
Hauke Laging <3q2...@hauke-laging.de> wrote:

> 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

Jochen Hub

unread,
Sep 8, 2008, 12:59:27 PM9/8/08
to
Hauke Laging wrote:
> 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...
>
>
> Hauke

Was ist eigentlich der Unterschied zwischen [*] und [@] bei Arrays ?

Gruss, jochen

Paul Hink

unread,
Sep 8, 2008, 1:55:00 PM9/8/08
to
Jochen Hub <jh...@gwdg.here_simply_one_dot.de> wrote:

> 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)

0 new messages