Linux/Unix Shell Scripting - Consulta if/else

   
Vista:

Consulta if/else

Publicado por javier (3 intervenciones) el 26/03/2014 17:35:41
Buenas tardes.

Estoy haciendo un ejercicio en shell script en el cual tengo que introducir y comprobar una fecha y un numero. Ahora quiero hacerlo introduciendo esas variable cuando llamo al script. Mi codigo es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
if [ $# -eq 2 ] then
		a=$( echo $1 | cut -c 1-2)
		b=$(echo $1 | cut -c 4-5)
		c=$(echo $1 | cut -c 7-10)
			if [ $a -ge 1 -a 31 -ge $a -a $b -ge 1 -a 12 -ge $b -a $c -ge 1000 -a 9999 -ge $c ] then
					echo "la fecha $a-$b-$c es correcta"
				else
					echo "la fecha es incorrecta"
			fi 2>/dev/null
 
			if [ $2 -ge 10000 -a 99999 -ge $2 ] then
					echo "el codigo $2 es correcto"
				else
					echo 'El codigo es incorrecto'
			fi 2>/dev/null
 
	else
		if [ $# -eq 1 ] then
				a=$( echo $1 | cut -c 1-2)
				b=$(echo $1 | cut -c 4-5)
				c=$(echo $1 | cut -c 7-10)
					if [ $a -ge 1 -a 31 -ge $a -a $b -ge 1 -a 12 -ge $b -a $c -ge 1000 -a 9999 -ge $c ] then
							echo "la fecha $a-$b-$c es correcta"
						else
							echo "la fecha es incorrecta"
					fi 2>/dev/null
				echo 'Introduce el codigo del tren con formato NNNNN'
				read codigo
					if [ $codigo -ge 10000 -a 99999 -ge $codigo ] then
							echo "el codigo $codigo es correcto"
						else
							echo 'El codigo es incorrecto'
					fi 2>/dev/null
			else
				'Introduce una fecha con formato DD-MM-YYYY'
				read fecha
				a=$( echo $fecha | cut -c 1-2)
				b=$(echo $fecha | cut -c 4-5)
				c=$(echo $fecha | cut -c 7-10)
					if [ $a -ge 1 -a 31 -ge $a -a $b -ge 1 -a 12 -ge $b -a $c -ge 1000 -a 9999 -ge $c ] then
							echo "la fecha $a-$b-$c es correcta"
						else
							echo "la fecha es incorrecta"
					fi 2>/dev/null
				echo 'Introduce el codigo del tren con formato NNNNN'
				read codigo
					if [ $codigo -ge 10000 -a 99999 -ge $codigo ] then
							echo "el codigo $codigo es correcto"
						else
							echo 'El codigo es incorrecto'
					fi 2>/dev/null
	fi 2>/dev/null


El programa se llama prueba2 y al llamarlo pongo:
prueba2 25-10-1993 00005

pero me da fallo en el primer else que meto. Alguna idea de como tengo que concateras los if then /else para que vaya entrando en lso bucles??

Saludos y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Consulta if/else

Publicado por xve (254 intervenciones) el 26/03/2014 22:14:54
Hola Javier, antes de cada then tiene que ir punto y coma (;) algo así:

1
if [ ... ]; then

Si le añades el punto y coma a todos los if, veras que se soluciona el problema.

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta if/else

Publicado por javier (3 intervenciones) el 27/03/2014 08:22:31
El fallo ese se ha corregido. muchas gracias.

Ahora me da fallo en la ultima linea, me dice que no se esperaba ese final.

un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta if/else

Publicado por javier (3 intervenciones) el 27/03/2014 09:24:17
Todo solucionado!!1
Muchas gracias Xve

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar