Error en script

S

Hola
tengo que conseguir crear un script en el cual si estamos en la primera quincena del mes diga que estamos en la primera quincena el mes y si estamos en la segunda que diga que estamos en la segunda.Yo tengo este script pero me da el siguiente error: Syntax error: end of file unexpected (expecting "fi").Aquí os dejo el script,necesito ayuda.

#!bin/bash
clear
if [ date | cut -d " " -f3 <= "15" ]; then resultado=primera quincena del mes
else if [ date | cut -d " " -f3 > "15" ]; then resultado=segunda quincena del mes
fi
echo "Estamos en la" $resultado

Soulscx

no te falta un fi del fi externo ?
algo en plan

#!bin/bash
clear
if [ date | cut -d " " -f3 <= "15" ]; then resultado=`primera quincena del mes` 
else if [ date | cut -d " " -f3 > "15" ]; then resultado=`segunda quincena del mes`
        fi
fi
echo "Estamos en la" $resultado
1 respuesta
S

#2 Acabo de ponerlo y ahora me da el siguiente error:

ejercicio.sh: 3: quince.sh: cannot open =: No such file
ejercicio.sh: 3: [: missing ]
ejercicio.sh: 4: [: missing ]
cut: ]: No existe el archivo o el directorio
Estamos en la

willy_chaos

En la declararion del interprete del script falta un /

#!/bin/bash es como debería ser

No entiendo porque haces un else if , si haces un else ya directamente, dando por hecho de que si no estas en la primera quincena estaras en la segunda..

Obviamente no existen dias negativos, y tampoco es que los meses vayan a tener 1000 dias por lo que haciendo que si el numero del dia esta entre 1 - 15 que muestre el mensaje de la primera quincena, si no que muestre el otro.

Te sobra el fi que te dice el compañero

Edit: Vale justo mientras editaba #5 te ha dejado el codigo limpito. En su codigo puedes ver retirado y arreglado lo que te comento

1 respuesta
0nLy

Te sobra un else if

#!/bin/bash
clear

if [ date | cut -d"" -f3 <= 15 ]
then
        echo "Estamos en la primera quincena del mes"
else
        echo "Estamos en la segunda quincena del mes"
fi
1 respuesta
S

#4 Ya lo he corregido y sigue igual.

#5 Acabo de corregirlo y ahora me da el siguiente error:

ejercicio.sh: 4: quince1.sh: cannot open =: No such file
ejercicio.sh: 4: [: missing ]
Estamos en la segunda quincena del mes

1 respuesta
willy_chaos

#6

Lo he probado asi (Debian 8), y funciona perfecto

#!/bin/bash
clear
if [ `date | cut -d " " -f3` -le 15 ]
then
    echo "Estamos en la primera quincena del mes"
else
    echo "Estamos en la segunda quincena del mes"
fi
2 respuestas
Deoxys

¿Tiene que ser en bash?

import subprocess
print "Primera quincena" if int(subprocess.check_output('date').split()[1])<=15 else "Segunda quincena"
1
S

#7 Me funciono! Gracias a todos.

S

#7 ¿Que significa -le ?
Es que no lo entiendo,entiendo esto [ date | cut -d " " -f3 <= "15" ] pero -le no se como funciona

1 respuesta
willy_chaos

#10 LE = Lower equal --> Lo mismo que decir "<="

El problema no estaba tanto en el -le , sino en que cuando hacias la comparacion del if para mi que se le iba un poco la pinza, porque quiza no entendia que la primera parte era un unico resultado, sino que debia interpretar mal la condicion al ver tanto código.

Si pones el comando entre ``, lo ejecutara como 1 solo comando. Esto te devolvera 1 numero que es el que usara para la comparacion con el if

Usuarios habituales