Come faccio a far funzionare correttamente questo script terminale?

-1

Voglio che appaia come se stessi contattando un gruppo di indirizzi IP e funzioni fino alla terza riga del codice e voglio essere in grado di risolverlo. Anche le 4 linee di fondo non funzionano.

Quindi questo è sostanzialmente ciò che ho ottenuto finora:

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
    
posta Richard 17.05.2015 - 00:22
fonte

2 risposte

0

Non so cosa stai provando a realizzare qui, ma non è davvero necessario eseguire un test per la condizione di uscita mentre si è ancora all'interno del ciclo:

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 sintassi per if ... then ... else (nel caso in cui sia necessario per qualcos'altro) in realtà è

if [ $i -eq 100000000 ]; then
    echo "Got a match!"
fi
    
risposta data 17.05.2015 - 22:19
fonte
0

Due problemi:

  1. Hai bisogno di uno spazio bianco tra "if [" e "[ valutazione numerica ]" per eseguire correttamente.

  2. La sintassi logica non è corretta. if x ; then (e solo allora) y ; else z ; fi ; done . Else non è necessario, ma non puoi dichiarare due identiche dichiarazioni if in questo modo:

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

Questo non ha senso logico. D'altra parte:

  • if x , then y & z fa.

Detto questo, ecco quello che stai cercando:

#! /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

Che, se salvato come script, test.sh restituisce quanto segue:

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]
    
risposta data 18.05.2015 - 04:44
fonte

Leggi altre domande sui tag