Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: gr0ny en Agosto 30, 2021, 01:41:27 PM

Título: [SOLUCIONADO] error sintactico cerca del elemento "else"
Publicado por: gr0ny en Agosto 30, 2021, 01:41:27 PM
Buenos dias, espero todos esten bien.
Quisiera saber si por favor me podian ayudar con este error:

./portscan.sh: línea 11: error sintáctico cerca del elemento inesperado `else'
./portscan.sh: línea 11: `else'


No se que es lo que estoy haciendo mal, ya lo revise varias veces y no veo el error, el codigo es el siguiente:

Código (bash) [Seleccionar]
#!/bin/bash
#!./portscan.sh
if [ $1 ]
        ip_address=$1
        for port in $( seq 1 65535 ); do
        timeout 1 bash -c "echo ' ' > /dev/tcp/$ip_address/$port" 2>/dev/null && echo " [*] Port $port - OPEN" &
        done; wait
else
    echo -e "\n [*] Uso: ./portscan.sh <ip_address>\n"
    exit 1
fi


Muchas gracias.
Título: Re: error sintactico cerca del elemento "else"
Publicado por: DtxdF en Agosto 30, 2021, 06:58:54 PM
Te falta el then en el if. Ejemplo:

Código (bash) [Seleccionar]
if command
then
# foo
else
# bar
fi


A veces se coloca directamente el then separándolo del if con punto y coma, simplemente porque para muchos puede ser más fácil de leer. Aunque es de índole personal.

Te recomiendo:

*.- https://www.freebsd.org/cgi/man.cgi?query=sh&sektion=&n=1

Específicamente: Flow-Control Constructs (if, while, for, case)

Tal vez te preguntes, qué es [. No es más que un comando, y al if lo que le interesa es la salida. Ese comando, que es el mismo que el comando test, retorna un número diferente a cero adrede, dependiendo de la condición.

El correspondiente manual del comando test, [:

*.- https://www.freebsd.org/cgi/man.cgi?test

~ DtxdF