[PROBLEMA SHELL SCRIPT] Llamar a una funcion desde un case

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: maiku, akodo

Responder
Aneeh
Forista Nuevo
Forista Nuevo
Mensajes: 4
Registrado: Dom Nov 30, 2014 2:23 pm

[PROBLEMA SHELL SCRIPT] Llamar a una funcion desde un case

Mensaje por Aneeh »

Buenas tardes compañeros, estaba haciendo una práctica sobre shell script y se me ocurrió intentar hacer los ejercicios con funciones; pero a la hora de llamarlas desde un case me dice que la orden no ha sido encontrada, y no sé dónde está el error. Os dejo el código del ejercicio por el momento:

Código: Seleccionar todo

# Ejercicio 2_1
 
echo 1. "Mostrar los usuarios de su grupo"
echo 2. "Mostrar usuarios de su grupo y su directorio home"
echo 3. "Hacer listado de grupos con los usuarios que tienen"
echo 4. Salir
echo
read opc
 
case $opc in
1)
grupo=`cut -f1,4 -d: /etc/passwd | grep -w ^$USER | cut -f2 -d:`
 
parte1=`cut -f1,4 -d: /etc/passwd | grep -w "$grupo"$`
 
echo $parte1
 
;;
2)
grupo=`cut -f1,4 -d: /etc/passwd | grep -w ^$USER | cut -f2 -d:`
 
parte1=`cut -f1,4 -d: /etc/passwd | grep -w "$grupo"$`
 
parte2=`cut -f1,4,6 -d: /etc/passwd | grep -w ^"$parte1"`
 
echo $parte2
 
;;
3)
prueba
 
;;
4)
echo Gracias por utilizar este programa
;;
*)
echo Seleccione una opción correcta
;;
esac
 
function prueba()
{
 
echo ESTO ES UNA PRUEBA
 
}
Quería usarlo porque por ejemplo en el segundo caso, utilizo la información obtenida del apartado 1 y podría ahorrar esas líneas de código

Espero que podáis ayudar :/ gracias de antemano

Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: [PROBLEMA SHELL SCRIPT] Llamar a una funcion desde un case

Mensaje por hipersayan_x »

Tenes que definir la función antes de llamarla.

Código: Seleccionar todo

# Ejercicio 2_1

function prueba()
{
 
echo ESTO ES UNA PRUEBA
 
}
 
echo 1. "Mostrar los usuarios de su grupo"
echo 2. "Mostrar usuarios de su grupo y su directorio home"
echo 3. "Hacer listado de grupos con los usuarios que tienen"
echo 4. Salir
echo
read opc
 
case $opc in
1)
grupo=`cut -f1,4 -d: /etc/passwd | grep -w ^$USER | cut -f2 -d:`
 
parte1=`cut -f1,4 -d: /etc/passwd | grep -w "$grupo"$`
 
echo $parte1
 
;;
2)
grupo=`cut -f1,4 -d: /etc/passwd | grep -w ^$USER | cut -f2 -d:`
 
parte1=`cut -f1,4 -d: /etc/passwd | grep -w "$grupo"$`
 
parte2=`cut -f1,4,6 -d: /etc/passwd | grep -w ^"$parte1"`
 
echo $parte2
 
;;
3)
prueba
 
;;
4)
echo Gracias por utilizar este programa
;;
*)
echo Seleccione una opción correcta
;;
esac
 
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net

Aneeh
Forista Nuevo
Forista Nuevo
Mensajes: 4
Registrado: Dom Nov 30, 2014 2:23 pm

Re: [PROBLEMA SHELL SCRIPT] Llamar a una funcion desde un case {Solucionado}

Mensaje por Aneeh »

hipersayan_x escribió:Tenes que definir la función antes de llamarla.
Jolin, si lo hubiera sabido antes. Pensaba que podría definirse en cualquier lado, como en javascript. Muchas gracias hipersayan_x!

Avatar de Usuario
akodo
Moderador
Moderador
Mensajes: 1457
Registrado: Mié Nov 28, 2007 8:00 am
Ubicación: En la X del explorer (pulse para llamar)

Re: [PROBLEMA SHELL SCRIPT] Llamar a una funcion desde un case

Mensaje por akodo »

Aneeh escribió:
hipersayan_x escribió:Tenes que definir la función antes de llamarla.
Jolin, si lo hubiera sabido antes. Pensaba que podría definirse en cualquier lado, como en javascript. Muchas gracias hipersayan_x!
Eso no es cierto.
En ambos lenguajes (y me atrevería a decir que en todos) las funciones las debes definir antes de llamarlas. Determinados lenguajes, entre los que están los nombrados (aquí ya no me atrevo a decir todos :roll: ) permiten definir las funciones en cualquier sitio, pero siempre cumpliendo la regla anterior de "definir antes de llamar".

Adicionalmente, sobretodo en los lenguajes de scripting (shell, javascript...) tu aplicación se podría ejecutar a pesar de que la función se defina después siempre que dicha parte de código (la que llama a la función) no se ejecute, y por tanto no viole la regla de definir la función antes de llamar debido a que no llega a llamarse a la función.

Como nota adicional, es "de buena educación" definir las funciones al principio; es lo que la gente suele esperar. Siempre hay excepciones dependiendo de los lenguajes, pero que se consideran prácticas habituales a la hora de programar en dicho lenguaje.

PD: Si tienes alguna duda respecto al tema en javascript, puedes abrir un nuevo hilo exponiendo la duda, así damos por cerrado este
Descargue el gestor de mp3 "Music Manager" -> ([url=http://ctrlalt.iespana.es]mmlf[/url])
Última versión del gestor "Music Manager" -> ([url=http://sourceforge.net/projects/jmusicmanager/]jmmm[/url])

Aneeh
Forista Nuevo
Forista Nuevo
Mensajes: 4
Registrado: Dom Nov 30, 2014 2:23 pm

Re: [PROBLEMA SHELL SCRIPT] Llamar a una funcion desde un case

Mensaje por Aneeh »

Código: Seleccionar todo

<html>
	<head>
		<title> Prueba funciones </title>
	</head>
	<body>
		<script languaje="JavaScript">

			prueba();

			function prueba() {
				alert ("La funcion ha sido definida despues");
			}
			
		</script>

	<body>
</html>
A mí esto me funciona, pero bueno supongo que me estoy iniciando y en javascript por lo menos nunca me mencionaron que hiciera falta declarar la función antes de usarla. Pero si es lo que se espera cambiaré los hábitos para que sea más legible, gracias por la información!

Avatar de Usuario
maiku
Moderador
Moderador
Mensajes: 1529
Registrado: Jue Abr 19, 2007 7:00 am
Ubicación: Cojutepeque, El Salvador C. A.

Re: [PROBLEMA SHELL SCRIPT] Llamar a una funcion desde un case {Solucionado}

Mensaje por maiku »

Aneeh escribió:
hipersayan_x escribió:Tenes que definir la función antes de llamarla.
Jolin, si lo hubiera sabido antes. Pensaba que podría definirse en cualquier lado, como en javascript. Muchas gracias hipersayan_x!
Yo las defino en cualquier lado en JavaScript y Java :/ pero les robo el tip para BASH.
Grüße...
Maiku

Full linux alchemist!!!

Responder
  • Temas similares
    Respuestas
    Vistas
    Último mensaje