aaaa gilipollez en shell script

buenas,


recurro a vuestra sabidurida, después de unas horas flipando...

Me explico, un shell script sencillito, tengo una lista de proxys, y quiero sacar una lista filtrada con los proxys que funcionan de p.m.
Pero no le da la gana funcionar a la función test como es debido...

El engendro (resumido para no enbarullar más de la cuenta):



#pro2 es donde está la lista de las ips y lista_ok donde se almacenan
var=`cat pro2 | cut -d ":" -f 1 | tr '\n' ' '`;
rm -f tmp

variable=0
limite=30
limit=1000
#borramos el fichero de salida :-)

if (test -e lista_proxy_ok) then
rm lista_proxy_ok
fi

for i in $var;
do
echo $i
ping -n 2 -w 1000 "$i" 2>/dev/null > tmp

#Comprobamos si ha habido paquetes perdidos, solo
#escojo servers que no pierdan paquetes
perdi=`cat tmp | grep perdidos | cut -d "(" -f 1 | cut -d "=" -f 4 | tr -d "\n" | tr -d " "`
echo $perdi | grep 0
if (test $? -eq 0)
then
vel=`cat tmp| grep Media | cut -d "=" -f 4 | tr -d [:alpha:] | tr -d " " | tr -d "\n"`
echo "$vel"
echo "test.."
if [ $vel -le $limit ]
then
echo "VEL OK"
fi

fi

done


Todo debería funcionar Ok... pero la parte:
if [ $vel -le $limit ]then
echo "VEL OK"
fi


No quiere funcionar.. he probado de mil formas, con $limit, con un numero a pelo (xej 200) , con :

case "$vel" in
[0-1][0-9][0-9])
echo "VIIVA"
;;
esac


Con el case directamente no entra dentro de la condición, con el test me dice: Integer expresion expected. Y mira que no se me ha colado ningún espacio ni nada parecido para que bash lo confunda con un string...

Eso sí, el script está corriendo sobre un verdadero engedro: cygwin
[jaja] [jaja]

(y no, el equipo tiene que ir con win, que lo tengo que devolver, de hecho estoy apunto de kitar la debian [mamaaaaa] [mamaaaaa] )

Estoy metiendo la pata hasta el fondo?, podría ser un bug del cygwin.. se os ocurre alguna manera todavía más extraña de intentar hacer esa comparación?? x. ej como he hecho en:
echo $perdi | grep 0
if (test $? -eq 0)


En fins, un saludo, u 2
No intentaras hacer un lesser than?

No sera -lt lo que necesitas [idea]ç



PD: Edito se me ha ido la olla no se porque pensaba que lesser or equal se escribia de otra forma [borracho]
JEje, que marikiiiita, xD

Puedo jurar ke he probado con casi todas las opciones del test, desde le, a ge y pasando por opciones de cadena [sonrisa]

Un saludete


Pd: Se nota ke es broma lo de marikita, no? xD
dykstra escribió:if [ $vel -le $limit ]then
echo "VEL OK"
fi


A ver, por decir una soplapollez (ya sabes que me encanta xD) y aparte, para intentar aportar algo... ese "then" está en la siguiente línea, como has puesto en el código completo ¿no? Es que recuerdo un shell script cuando aprendí a hacerlos, que me daba problemas por poner el if y el then en la misma línea...

Supongo que ese no será el problema, pero bueno, por si las moscas ahí lo dejo.

Y si no es, no me flageléis, que luego acusan a mi perro de maltratarme con las uñas xD
[tomaaa]

Pues sí, tenía puesto el then donde tenía que estar*...



Al final he conseguido eludir el problema del jodío test así:


expr "$vel" \< 150 >/dev/null


if [ $? -eq 0 ]
then
................



En fín, para 8 líneas de script, al final con tanta tontería ha quedado una verdadera porquería... y encima se quedaba el script pillado... (creo que por mandar echos de debug, se ve que la consola del cygwin se queda pillada si mando más de tres caracteres por segundo**)


Y si no es, no me flageléis, que luego acusan a mi perro de maltratarme con las uñas xD


Buf, no creo que nadie de aquí se atreva, con tanta frikez nunca antes vista en firma, procedencia, etc.... y encima con ¡¡¡esta imagen!!!
X-D X-D X-D X-D X-D X-D X-D X-D X-D X-D X-D X-D X-D X-D X-D X-D X-D X-D

*y mira que es dificil, uno se aconstumbra a intentar poner las llaves seguidas en los ifs: if () {... en C, por eso de que la etiketa del kernel dice eso... y ahora los then en shell script hay que ponerlos abajo... ¡que semos un monito de constumbres, coñe ! xDDDDDDdddd

** cosa rara, porque he llegado a compilar toolchains enteros en cygwin, y si alguien ha compilado el kernel o tiene gentoo sabe que precisamente las compilaciones no paran de escupir mierda por consola... será esta versión, digo yo...


PD: Si alguien le interesa esa cosa tan bonita*** como es cambiarse la ip de forma cómoda, que me avise, y creo un bonito hilo explicativo (ya tengo elegido hasta nombre x'D)


*** Sí, soy friki, friki, friki, friki, friki, friki, friki, friki,mushroom, [qmparto] [qmparto] [qmparto]
4 respuestas