[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