Arrays als Umgebungsvariablen setzen

Hallo
Ich hab mal wieder eine Frage:
Wenn ich eine Arrayvariable in die Umgebung bringen will (in der Bash)
funktioniert das nicht.

ARRAY=( a b c )
export ARRAY

ARRAY wird aber keine Umgebungsvariable. Sind dort keine Arrays möglich, oder woran liegt das?
MfG Stefan

Hallo

ARRAY wird aber keine Umgebungsvariable.

Woher weisst Du das?

Sind dort [in der bash] keine Arrays möglich, oder woran liegt das?

Das kommt auf die Version der bash an. Normalerweise geht das:

fritze@rechner:~$ export vektor=(a b c d)
fritze@rechner:~$ echo ${vektor[0]}
a
fritze@rechner:~$ bash --version
GNU bash, version 3.2.13(1)-release (i486-pc-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

Geht.

Gruß

Fritze

Wenn ich eine Arrayvariable in die Umgebung bringen will (in
der Bash) funktioniert das nicht.

Ja.

Sind dort keine Arrays möglich, oder woran liegt das?

Nein. Die meisten shells, die ich kenne, koennen das AFAIK nicht. Umschaufeln in einen ein Skalar mit Trennzeichen, exportieren und in der subshell wieder auseinanderbauen. Ja, ist doof.

Gruss vom Frank.

ARRAY wird aber keine Umgebungsvariable.

Woher weisst Du das?

Gute Frage, die bash dokumentiert sowas naemlich nicht in der man page.

Das kommt auf die Version der bash an. Normalerweise geht das:

> fritze@rechner:~$ export vektor=(a b c d)  
> fritze@rechner:~$ echo ${vektor[0]}  
> a  
> fritze@rechner:~$ bash --version  
> GNU bash, version 3.2.13(1)-release (i486-pc-linux-gnu)  
> Copyright (C) 2005 Free Software Foundation, Inc.

Geht.

Es ging ja auch um export in subshells, die Du glatt vergessen hast:

[10012] (0) frank@harbard [~] % bash
frank@harbard [~] $ export array=( a b c d )
frank@harbard [~] $ echo ${array[1]}
b
frank@harbard [~] $ export |grep array 
declare -ax array='([0]="a" [1]="b" [2]="c" [3]="d")'
frank@harbard [~] $ bash
frank@harbard [~] $ echo ${array[1]}

frank@harbard [~] $ export |grep array
frank@harbard [~] $ 

Weg isses.

Gruss vom Frank.