[Linux-Biella] variabili shell in !bash ma in sh

Daniele Segato daniele.bilug a gmail.com
Sab 31 Ott 2009 15:58:54 CET


Il giorno sab, 31/10/2009 alle 15.53 +0100, Daniele Segato ha scritto:
> Il giorno sab, 31/10/2009 alle 11.43 +0100, leonardo buffa ha scritto:
> > ciao
> > avrei bisogno di gestire le classiche variabili indicizzate tipo a[1]
> > a[2] eccetera
> > in bash posso farlo senza problemi con un normalissimo:
> > a[0]="pippo"
> > a[1]="pluto"
> > 
> > e richiamandole con $a{[0]} e $a{[1]} eccetera
> > 
> > in sh mi da errore e non riesco a trovare nulla, sh le gestisce o devo
> > per forza usare bash?
> 
> non è supportato da sh, puoi simularlo con eval:
> 
> a1=one
> a2=two
> a3=three
> for ((i=1; i<=3; i++)); do
>   eval echo "value of a${i} = \${a${i}}"
>   # or eval echo "value of a$i = \$a$i"
> done
> 

altro esempio:

definisci 2 funzioni

setvar() { 
    eval "${1}=${2}" 
} 


getvar() { 
    eval "VAR=\$${1}" 
} 


e le usi...

n=0 
while [ $n -lt 10 ] 
do 
  setvar q_$n $RANDOM 
  n=$(( n + 1 )) 
done 
while [ $n -gt 0 ] 
do 
  n=$(( $n - 1 )) 
  getvar q_$n 
  echo q_$n=$VAR 
done




Maggiori informazioni sulla lista Linux