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