[linux] bash: substitucia premennej
Oskar Stolc
stolc na intrak.sk
Pátek Srpen 16 21:11:39 CEST 2002
On Fri, Aug 16, 2002 at 02:57:20PM +0200, Ivan Malich wrote:
> Caute,
>
> Neviete mi niekto poradit, ako funguje substitucia premennych v bash-i?
> Chcem urobit taketo nieco:
>
> ---begin---
> #!/bin/sh
>
> NAME_1=jozko
> NAME_2=ferko
> ...
> NAME_N=zuzka
>
> i=1
> while [ podmienka ]; do
> varname="NAME_$i" # do $varname ulozi nazov premennej
> # obsahujucej meno i-teho cloveka
> name=??? # do $name vlozi meno i-teho cloveka
> echo $name # vypise meno i-teho cloveka
> let i=$i+1
> done
> ---end---
no, mozno toto moje riesenie nie je najlepsie, ale funguje:
#!/bin/sh
NAME_1=jozko
NAME_2=ferko
NAME_3=zuzka
for i in $(seq 3); do
varname=$(eval "echo \$NAME_$i")
echo $varname
done
>
> Cize v principe:
>
> ---begin---
> varname="meno_pemennej_shellu"
> varvalue=???
> echo $varvalue # hodnota premennej meno_premennej_shellu
> ---end---
>
> Ked som to skusal, nenasiel som ziadny sposob, ako to urobit. V manuale
> k bash-u som to tiez nenasiel. Napriklad takato vec
>
> $ varvalue=${meno_premennej_shellu}
>
> funguje, ale takato
>
> $ varvalue=${$varname}
>
> uz nie.
> Budem velmi vdacny za kazde malicke nakopnutie, ktore ma privedie k
> rieseniu.
>
> Dakujem.
>
> Ico
oskar
Další informace o konferenci linux