¿Cómo hago para que este script de terminal funcione correctamente?

-1

Quiero que aparezca como si estuviera contactando con un grupo de direcciones IP y funciona bien hasta la tercera línea en el código y quiero poder solucionarlo. También las 4 líneas de fondo no funcionan.

Así que esto es básicamente lo que tengo hasta ahora:

for((i=0;i<=100000000;i++)); 
    do echo "Request #" $i " returned ip-adress " [$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256))];
  if["$i" = "100000000"]
    do echo "All ip-adresses have been stored in local hard drive." -$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256));
  if["$i" = "100000000"]
    do echo [Process Completed];
done
    
pregunta Richard 17.05.2015 - 00:22

2 respuestas

0

No sé qué está intentando lograr aquí, pero no es realmente necesario hacer una prueba para determinar la condición de salida mientras está dentro del bucle:

for ((i=0;i<=100000000;i++)); do
    echo "Request #$i returned ip-adress" [$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256))]
done

echo "All ip-adresses have been stored in local hard drive."
echo "[Process Completed]"

La sintaxis de if ... then ... else (en caso de que necesites esto para otra cosa) en realidad es

if [ $i -eq 100000000 ]; then
    echo "Got a match!"
fi
    
respondido por el nohillside 17.05.2015 - 22:19
0

Dos problemas:

  1. Necesita espacios en blanco entre "if [" así como "[ evaluación numérica ]" para ejecutar correctamente.

  2. La sintaxis lógica es incorrecta. if x ; then (y solo entonces) y ; else z ; fi ; done . Else no es necesario, pero no puede declarar dos declaraciones if idénticas de esta manera:

    • if x , then y .
    • if x , then z .

Eso no tiene sentido lógico. Por otro lado:

  • if x , then y & z hace.

Dicho esto, esto es lo que estás buscando:

#! /bin/bash

for((i=0;i<=100000000;i++)); 
    do echo "Request #" $i " returned ip-adress “[ $((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256)) ];
if [ "$i" = "100000000" ];
    then echo "All ip-adresses have been stored in local hard drive." -$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256)) && echo [Process Completed];
fi
done

Que, cuando se guarda como un guión, test.sh devuelve lo siguiente:

MacBook-Pro:~ njboot$ test.sh
Request # 0  returned ip-adress  [ 0.84.37.68 ]
Request # 1  returned ip-adress  [ 169.181.247.217 ]
Request # 2  returned ip-adress  [ 164.183.119.15 ]
Request # 3  returned ip-adress  [ 191.149.177.224 ]
Request # 4  returned ip-adress  [ 84.28.26.92 ]
Request # 5  returned ip-adress  [ 54.38.89.138 ]
Request # 6  returned ip-adress  [ 86.222.217.2 ]
Request # 7  returned ip-adress  [ 57.178.16.75 ]
Request # 8  returned ip-adress  [ 26.22.140.245 ]
Request # 9  returned ip-adress  [ 222.255.194.118 ]
Request # 10  returned ip-adress  [ 188.26.150.197 ]
…
Request # 100000000 returned ip-adress  [ 233.66.114.134 ]
All ip-adresses have been stored in local hard drive. -181.167.202.102
[Process Completed]
    
respondido por el njboot 18.05.2015 - 04:44

Lea otras preguntas en las etiquetas