[SOLUCIONADO][SH] Error al ejecutar script, [: falta un `]'

Iniciado por JoseluCross, 21 Febrero 2016, 17:06 PM

0 Miembros y 1 Visitante están viendo este tema.

JoseluCross

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
#!/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
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:~$
No hay problema sin solución, solo personas que no quieren resolverlo.

wuwu8

#!/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 (=)

JoseluCross

#2
Cita de: 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 (=)


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
No hay problema sin solución, solo personas que no quieren resolverlo.