[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