Crear 8 variables en un bucle WHILE
Hola lista, Estoy creando un script en el que necesito definir 8 variables a partir de $RANDOM. Estas variables deberían guardarse. Tal y como está definido actualmente script, cada vez que ejecuta el bucle WHILE, el valor de ésta cambia. La estructura resumida de éste es: #!/bin/bash i=1 #contador aciertos j=0 #contador total fecha=`date +%y%m%d` # fecha del fichero while [ $i -le 8 ] do RND1=$RANDOM (*)<--Esta es la variable que debe definirse 8 veces--> let j=j+1 (Aquí va el proceso que se repite ocho veces. Lo omito para simplificar...) let i=i+1 done La solución pasaría por: 1. Cambiar en (*) RND1 como RND$i=$RANDOM para obtener RND1, RND2, ..., RND8. Al ejecutar el script, veo en la shell que lo hace bien pero, en la misma línea, me termina dando error. La salida de la consola es: Desktop/Gerencia/scripts/random_prueba: line 16: RND1=535: command not found 2. Dejando el script como está, almanecenar $RND1 en un fichero mediante RND1=$RANDOM>>random_variables.txt. Esto lo hace sin error y genera el fichero con 8 líneas, una por cada valor obtenido para $RND1. Ahora bien, ¿cómo puedo hacer que RND1, cada una de las ocho veces que se genera, se compare con los valores almacenados en el fichero txt y evitar repeticiones? Lo he intentado con sed, cat, head... pero ninguno me permite comparar la variable con cada uno de los valores del txt, sólo me permiten visualizar un grupo determinado de líneas (las primeras, las últimas...). Gracias a todos. Un abrazo, E Garrido
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Comventia Express escribió:
Hola lista,
Estoy creando un script en el que necesito definir 8 variables a partir de $RANDOM. Estas variables deberían guardarse. Tal y como está definido actualmente script, cada vez que ejecuta el bucle WHILE, el valor de ésta cambia. La estructura resumida de éste es:
#!/bin/bash i=1 #contador aciertos j=0 #contador total fecha=`date +%y%m%d` # fecha del fichero
while [ $i -le 8 ] do RND1=$RANDOM (*)<--Esta es la variable que debe definirse 8 veces--> let j=j+1 (Aquí va el proceso que se repite ocho veces. Lo omito para simplificar...) let i=i+1 done
La solución pasaría por: 1. Cambiar en (*) RND1 como RND$i=$RANDOM para obtener RND1, RND2, ..., RND8. Al ejecutar el script, veo en la shell que lo hace bien pero, en la misma línea, me termina dando error. La salida de la consola es: Desktop/Gerencia/scripts/random_prueba: line 16: RND1=535: command not found 2. Dejando el script como está, almanecenar $RND1 en un fichero mediante RND1=$RANDOM>>random_variables.txt. Esto lo hace sin error y genera el fichero con 8 líneas, una por cada valor obtenido para $RND1. Ahora bien, ¿cómo puedo hacer que RND1, cada una de las ocho veces que se genera, se compare con los valores almacenados en el fichero txt y evitar repeticiones? Lo he intentado con sed, cat, head... pero ninguno me permite comparar la variable con cada uno de los valores del txt, sólo me permiten visualizar un grupo determinado de líneas (las primeras, las últimas...).
Gracias a todos. Un abrazo, E Garrido
Hola: Es solo una idea,si antes de RND1=$RANDOM>>random_variables.txt haces echo "$i- " >> random_variables.txt tendrias cada linea asi: nº_de_variable- valor_variable luego jugando con grep "nº_de_variable-" y gawk '{print $2}' tienes la variable por linea que quieres. como lo ves? - -- Chema Ollés Usuario Linux: #198057 Linux 2.6.16-rc5-git2-2-smp #1 SMP Tue Feb 28 09:16:17 UTC 2006 i686 GNU/Linux -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) iD8DBQFERfuS65SpD7GhbzoRAnx5AJ933Lo3GEXYKk/UmGdc8VPxen0e3ACdHmRA ROXDfGssGaC/34VCRzVzwNQ= =rc2G -----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2006-04-19 a las 10:00 +0200, Comventia Express escribió:
Estoy creando un script en el que necesito definir 8 variables a partir de $RANDOM. Estas variables deberían guardarse. Tal y como está definido actualmente script, cada vez que ejecuta el bucle WHILE, el valor de ésta cambia. La estructura resumida de éste es: ... RND1=$RANDOM (*)<--Esta es la variable que debe definirse 8 veces-->
usa vectores: RND[i]=$RANDOM echo ${RND[i]} Incluso en una linea: cer@nimrodel:~/bin> RND=( $RANDOM $RANDOM ) ; echo ${RND[0]} ${RND[0]} 6403 6403 En un script varia ligeramente, pero tengo prisa y no me sale. - -- Saludos Carlos Robinson -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) Comment: Made with pgp4pine 1.76 iD8DBQFERhTOtTMYHG2NR9URAsnEAJ9kxjMvz8U/7NytJUUg/KSTEjf0BwCfUYDQ 5xc2FCnuHsGKgaivcc9Ae5k= =gcVz -----END PGP SIGNATURE-----
participants (3)
-
Carlos E. R.
-
Chema Ollés
-
Comventia Express