Foros del Web » Administración de Sistemas » Unix / Linux »

Error al meter variable en shell script

Estas en el tema de Error al meter variable en shell script en el foro de Unix / Linux en Foros del Web. Como veréis con la duda que voy a plantear soy novato en programación de Linux. El código que pongo a continuación es parte de otro ...
  #1 (permalink)  
Antiguo 18/12/2007, 10:39
Avatar de klmnt  
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 17 años
Puntos: 1
Error al meter variable en shell script

Como veréis con la duda que voy a plantear soy novato en programación de Linux. El código que pongo a continuación es parte de otro pero lo voy a poner como si fuera independiente para no crear más lío:

Código:
echo "dime un año"
read anio

	div4='expr anio % 4'
	div100='expr anio % 100'
	div400='expr anio % 400'

	if ( test div4 -eq 0 -a div100 -eq 0 -a div400 -ne 0 )

		then

			echo "Es año bisiesto"

		else

			echo "No es año bisiesto"

	fi
El error, tras meter un año normal, me lo da en la comparación de div4. Me dice que ha de ser un entero. El error:

Código:
bash: test: div4: se esperaba expresión de tipo entero
¿Qué es lo que he de modificar?
  #2 (permalink)  
Antiguo 18/12/2007, 10:45
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 5 meses
Puntos: 29
Re: Error al meter variable en shell script

Prueba a depurar el código con echos para ver qué valores almacenan cada una de las variables.

Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #3 (permalink)  
Antiguo 18/12/2007, 10:58
Avatar de klmnt  
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 17 años
Puntos: 1
Re: Error al meter variable en shell script

Pongo por ejemplo:

Código:
echo "El valor de div4 es $div4"
Y lo que me sale en el terminal es:

Código:
Valor de div4 es div4
Y al final lo mismo de "Se esperaba expresión de tipo entero"
  #4 (permalink)  
Antiguo 18/12/2007, 11:17
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 5 meses
Puntos: 29
Re: Error al meter variable en shell script

Pues obviamente no estás realizando alguna operación bien, yo desafortunadamente no tengo un shell aquí para probar pero a mi modo de ver prueba a cambiar las comillas de

Cita:
div4='expr anio % 4'

por

div4=`expr anio % 4`
Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #5 (permalink)  
Antiguo 18/12/2007, 14:30
Avatar de klmnt  
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 17 años
Puntos: 1
Re: Error al meter variable en shell script

Cambié lo de las comillas. Ahora al salir las variables por pantalla sale en blanco. Sin embargo previamente en las 3 operaciones para meter el resultado en las variables me pone:

Código:
expr: argumento no numérico
Algo así ha de ser pero no se que narices estoy haciendo mal
  #6 (permalink)  
Antiguo 18/12/2007, 14:35
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 5 meses
Puntos: 29
Re: Error al meter variable en shell script

Mira esto, la verdad no sé porqué no te funciona, yo lo veo todo bien, a no ser que no estés introduciendo en la variable anio de la siguiente manera despues de cada expr o sea $anio. Pruebalo y nos cuentas.

saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”

Última edición por Koveart; 18/12/2007 a las 14:40
  #7 (permalink)  
Antiguo 18/12/2007, 16:08
Avatar de klmnt  
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 17 años
Puntos: 1
Re: Error al meter variable en shell script

Buenas de nuevo. Gracias por lo de antes. Ya devuelve por lo menos los valores de los restos. Ahora el problema es que en todas las comparaciones me pone lo mismo del número entero:

Código:
bash: test: div4: se esperaba expresión de tipo entero
  #8 (permalink)  
Antiguo 18/12/2007, 16:14
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 5 meses
Puntos: 29
Re: Error al meter variable en shell script

Chico no estas usando los $ en cada variable en esta linea

Cita:
if ( test $div4 -eq 0 -a $div100 -eq 0 -a $div400 -ne 0 )
Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #9 (permalink)  
Antiguo 18/12/2007, 16:39
Avatar de klmnt  
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 17 años
Puntos: 1
Re: Error al meter variable en shell script

Cita:
Iniciado por Koveart Ver Mensaje
Chico no estas usando los $ en cada variable en esta linea



Saludos
Pero si es que tenía que ser una tontería. De tantas cosas que he probado no se como no he puesto eso. Ya me extraña. Gracias y perdona
  #10 (permalink)  
Antiguo 18/12/2007, 16:44
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 5 meses
Puntos: 29
Re: Error al meter variable en shell script

No hay problema a veces no vemos los errores mas evidentes a todos nos ha pasado :)

saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:03.