Hola a todos,
Gracias por vuestras aportaciones. Al final, lo más fácil ha resultado hacer
lo siguiente:
#!/bin/bash
clear
i=1#contador aciertos
fecha=`date +%y%m%d` # fecha del fichero
cd ~/Desktop
while [ $i -le 9 ]
do
RND_MM[$i]=$RANDOM
if [ ${RND_MM[$i]} -ge 10000 ]; then
RND_dd[$i]=`echo ${RND_MM[$i]} | cut -c4,5`
if [ ${RND_dd[$i]} -lt 50 ] && [ ${RND_dd[$i]} -gt 0 ]; then
echo ${RND_dd[$i]}>>$aleatorias_var
let i=i+1
fi
fi
done
Me decanté por los vectores-como sugería Robinson-porque era más sencillo.
Resulta que soy un completo inútil con awk/gawk, la solución que apuntaba
Ollés. ¡Y mira que lo intentado unas cuantas veces! Gracias a los dos.
Ernesto
2006/4/19, Comventia Express
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