Linux - BASH. Nombre de variable con variables.

   
Vista:

BASH. Nombre de variable con variables.

Publicado por maria (4 intervenciones) el 27/06/2015 11:06:47
Hola buenas,

Tengo una variable que es la siguiente:

IP_R$X$y

La cual como veis depende de otras dos variables. Yo le asigano un comando que me devuleve una IP diferente cada vez que lo ejecuto.

IP_R$X$y=`comando`

Salida:

IP_R00=10.10.0.1
IP_R01=10.10.0.2
IP_R02=10.10.0.3
etc

Pero esa manera de expresarlo, me d error y no se quedan guardadas las variables en cada iteración de un bucle for que es donde está.

¿Podéis echarme una mano$?Quizás esto se haga de otra manera...pero no se me ocurre!!

Gracias!!!!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

BASH. Nombre de variable con variables.

Publicado por xve (662 intervenciones) el 27/06/2015 11:59:51
Hola Maria, que error te da?

Según nos muestras, parece correcto, no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

BASH. Nombre de variable con variables.

Publicado por meri_ye (4 intervenciones) el 27/06/2015 12:19:24
No se, el error es este:

borrar6.sh: line 15: IP_R00=10.10.0.18: command not found

Y claro las variables no se quedan guardadas. He probado con todo tipo de comillas y nada.

El codigo con el que estoy jugando es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
X=0
P=27000
 
for (( y=0; y<=2; y++ ));
do
	instancia="r$X$y"
	echo $instancia
 
	IP=`nova show "$instancia" | grep internal-net | awk '{print $5}'`
	echo $IP
	IP_R$X$y=$IP
 
	P=`expr $P + 1`
	echo $P
	PUERTO_R$X$y$="$P"
 
done

Los errores el que te he puesto arriba.

No se lo que hacer ya. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

BASH. Nombre de variable con variables.

Publicado por xve (662 intervenciones) el 27/06/2015 20:18:51
Hola Meri, puede ser que el error este en la linea 11??
si es ahí, prueba de ponerlo entre comillas... algo así:
1
IP_R$X$y="$IP"

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

BASH. Nombre de variable con variables.

Publicado por meri_ye (4 intervenciones) el 28/06/2015 11:15:49
Cierto que probé así y nada, seguía saliendo el mismo error.

Al final decidí meter IP_R$X$y=$IP como texto en un archivo temporal >> /tmp/ips.tmp y luego tratarlo como un array.

ipArray=($(awk '{print $1}' $fileips))
puertoArray=($(awk '{print $2}' $fileips))
arraySize="${#ipArray[@]}"

for (( i=0; i<${arraySize}; i++ ));
do
ip_maquina=${ipArray[$i]};
puerto_maquina=${puertoArray[$i]}

done

Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

BASH. Nombre de variable con variables.

Publicado por Tom (339 intervenciones) el 29/06/2015 14:40:49
1
eval IP_R$X$y=$IP
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar