/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
[BASH] Udlæse variabel variabel-navn
Fra : Jens


Dato : 12-11-07 11:45

Hvis jeg har dette:

for usr in john anders
do
john="doe"
anders="and"
echo "$usr ${usr}"
done

Jeg vil gerne have følgende output:
john doe
anders and

Hvordan får jeg udskrevet indholdet af $john og $anders ud fra det aktuelle
navn?



 
 
Mogens Kjaer (12-11-2007)
Kommentar
Fra : Mogens Kjaer


Dato : 12-11-07 12:17

Jens wrote:
....
> Jeg vil gerne have følgende output:
> john doe
> anders and

for usr in john anders
do
john="doe"
anders="and"
eval tmp=\$$usr
echo "$usr $tmp"
done

john doe
anders and


Mogens

--
Mogens Kjaer, Carlsberg A/S, Computer Department
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk

Jens (12-11-2007)
Kommentar
Fra : Jens


Dato : 12-11-07 13:29

>> Jeg vil gerne have følgende output:
>> john doe
>> anders and
>
> for usr in john anders
> do
> john="doe"
> anders="and"
> eval tmp=\$$usr
> echo "$usr $tmp"
> done
>
> john doe
> anders and

Mange tak, det fungere fint men jeg kommer i tanke om at jeg også skal bruge
det den anden vej:

for usr in john anders
do
$$usr_last="default"
john_last="doe"
eval tmp=\$${usr}_last
echo "$usr $tmp"
done

Således at der er en default værdi (ovenstående virker ikke):

john doe
anders default



Jens (13-11-2007)
Kommentar
Fra : Jens


Dato : 13-11-07 09:08

> Mange tak, det fungere fint men jeg kommer i tanke om at jeg også skal
> bruge det den anden vej:
>
> for usr in john anders
> do
> $$usr_last="default"
> john_last="doe"
> eval tmp=\$${usr}_last
> echo "$usr $tmp"
> done
>
> Således at der er en default værdi (ovenstående virker ikke):

Er der ingen gode bud på denne?



Henrik Christian Gro~ (12-11-2007)
Kommentar
Fra : Henrik Christian Gro~


Dato : 12-11-07 13:20

Mogens Kjaer <mk@crc.dk> writes:

> Jens wrote:
> ...
>> Jeg vil gerne have følgende output:
>> john doe
>> anders and
>
> for usr in john anders
> do
> john="doe"
> anders="and"
> eval tmp=\$$usr
> echo "$usr $tmp"
> done

Det er den pæne POSIX-kompatible løsning, i bash (men f.eks. ikke i zsh)
kan man også bare bruge:

for usr in john anders
do
john="doe"
anders="and"
echo "$usr ${!usr}"
done

..Henrik

--
.... applications which need to address vast amounts of memory
(e.g., big scientific crankers, large databases, emacs) ...
-- fra en artikel i LWN

Søg
Reklame
Statistik
Spørgsmål : 177547
Tips : 31968
Nyheder : 719565
Indlæg : 6408797
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste