Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: JoseluCross en 21 Febrero 2016, 17:06 pm



Título: [SOLUCIONADO][SH] Error al ejecutar script, [: falta un `]'
Publicado por: JoseluCross en 21 Febrero 2016, 17:06 pm
Hola a todos, estoy aprendiendo un poco de scripting en SH y probando con if else he tenido el problema que he puesto en el título, no se bien que es lo que tengo que hacer ni que es ese ` que falta. Muchas gracias de antemano.
El código del script es
Código:
#!/bin/sh
echo Introduzca el formato, 1 tar, 2 tar.gz, 3 tar.bz2
read format
if [ "$format" == 1];then
        tar cf $1.tar $1
        echo Se ha comprimido $1 en $1.tar
elif [ "$format" == 2];then
        tar czf $1.tar.gz $1
        echo Se ha comprimido $1 en $1.tar.gz
elif [ "$format" == 3];then
        tar cjf $1.tar.bz2 $1
        echo Se ha comprimido $1 en $1.tar.bz2
else
        echo Formato no incluido, reinicie el script
fi
Y el código del error que saco depués es
Código:
joselucross@Cross-PC:~$ comprimir prueba
Introduzca el formato, 1 tar, 2 tar.gz, 3 tar.bz2
2
/home/joselucross/.scripts/.comprimir.sh: línea 4: [: falta un `]'
/home/joselucross/.scripts/.comprimir.sh: línea 7: [: falta un `]'
/home/joselucross/.scripts/.comprimir.sh: línea 10: [: falta un `]'
Formato no includio, reinicie el script
joselucross@Cross-PC:~$


Título: Re: [SH] Error al ejecutar script, [: falta un `]'
Publicado por: wuwu8 en 21 Febrero 2016, 20:20 pm
#!/bin/sh
echo Introduzca el formato, 1 tar, 2 tar.gz, 3 tar.bz2
read format
if [ $format -eq 1 ];then
        tar cf $1.tar $1
        echo Se ha comprimido $1 en $1.tar
elif [ $format -eq 2 ];then
        tar czf $1.tar.gz $1
        echo Se ha comprimido $1 en $1.tar.gz
elif [ $format -eq 3 ];then
        tar cjf $1.tar.bz2 $1
        echo Se ha comprimido $1 en $1.tar.bz2
else
        echo Formato no incluido, reinicie el script
fi


La variable format dentro del if va sin comillas y los iguales se pone -eq (=)


Título: Re: [SH] Error al ejecutar script, [: falta un `]'
Publicado por: JoseluCross en 21 Febrero 2016, 20:37 pm
#!/bin/sh
echo Introduzca el formato, 1 tar, 2 tar.gz, 3 tar.bz2
read format
if [ $format -eq 1 ];then
        tar cf $1.tar $1
        echo Se ha comprimido $1 en $1.tar
elif [ $format -eq 2 ];then
        tar czf $1.tar.gz $1
        echo Se ha comprimido $1 en $1.tar.gz
elif [ $format -eq 3 ];then
        tar cjf $1.tar.bz2 $1
        echo Se ha comprimido $1 en $1.tar.bz2
else
        echo Formato no incluido, reinicie el script
fi


La variable format dentro del if va sin comillas y los iguales se pone -eq (=)


Me sigue dando el mismo error, cambiando exactamente lo que me has dicho sigue sin funcionar.  :-(

[EDITO]Al final lo solucioné, el problema estaba que entre los números y el corchete no había un espacio.
Si a alguién más tiene ese mismo error ya sabes cual es el origen. Muchas gracias a wuwu8 por su ayuda