Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Función Return En Shell Bash
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Función Return En Shell Bash 
 
Buenas!.

Estoy probando a crear una función que me devuelva un resultado.
No estoy acostumbrado y no se parece a la mayoría de los lenguajes.

Supongamos que quiero sumar dos números, es solo un ejemplo.
Lo habría hecho así, pero no funciona.

#!/bin/bash

function suma(){
valor=$(($1 + $2))
return $valor
}

resultado=$(suma $1 $2)
echo "El resultado es $resultado"
 


Mostrando tan solo: "El resultado es "
Para que funcione tuve que hacerlo de la siguiente forma:

#!/bin/bash

function suma(){
valor=$(($1 + $2))
return $valor
}

suma $1 $2
echo "El resultado es $?"
 


$? muestra el valor del último comando.

¿ Sabe alguien el motivo por el cual no se puede hacer de la primera forma ?
¿ Una variable local, global, entrada, salida ?.

La llamo así:
./EjemploSumar_nofunciona.sh 3 4
 


Naturalmente puedo almacenar el valor del último comando $? en una variable. variable=$?  
Y podía haber quedado así:

#!/bin/bash

function suma(){
valor=$(($1 + $2))
return $valor
}

suma $1 $2
# asignar el resultado a una variable
valor=$?
echo "El resultado es $valor"
 


Sin abreviar el código, claro, ya que probablemente podamos devolver directamente el valor de la operación sin asignar a una variable.

El cuerpo de la función hubiera sido:

function suma(){
# valor=$(($1 + $2))
return $(($1 + $2))
}
 


Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Viernes, 02 Noviembre 2018, 14:47; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Función Return En Shell Bash 
 
Que tal así?

#!/bin/bash

echo -n "Por favor ingrese el primer número: "
read number1
echo -n "Por favor ingrese el segundo número: "
read number2

sum=$((number1 + number2))
echo "La suma de $number1 y $number2 es $sum."


Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Función Return En Shell Bash 
 
Hola Tincho.

Citar:

Que tal así?


Lo de sumar tan solo era un ejemplo.  
Me interesaba más el tema de un valor devuelto por una función.

Si el lenguaje funciona de una forma, no lo vamos a cambiar. Si el trabaja así.  

La idea en si es que estoy ejecutando un script que necesita llamar a una función que le devuelve una respuesta
y según esta, el script toma un camino u otro.

Mi idea era saber si de una lista de paquetes que le voy pasando a la función, este, está instalado o no.
Comencé con esta función:

#!/bin/bash

function existe(){
cuenta=$(dpkg --get-selections | grep -wc $1)
# Si el valor de la variable es mayor o igual a uno..
if [ $cuenta -ge 1 ]; then
    # Si el paquete está instalado
    echo "El paquete $1 está instalado"
else
    # Si el paquete no está instalado
    echo "El paquete $1 no está instalado"
fi
}

existe $1
 


Si queremos saber si Gambas3 está instalado:

./ExistePaquete.sh gambas3
 


Devolviendo la frase según condición.

Ahora bien si estoy comprobando una lista de paquetes podíamos querer que según el valor devuelto,
este instalado: 1, o no: 0

#!/bin/bash

function existe(){
cuenta=$(dpkg --get-selections | grep -wc $1)
# Si el valor de la variable es mayor o igual a uno..
if [ $cuenta -ge 1 ]; then
    # En caso positivo devolvemos 1
    return 1
else
    # En caso contrario devolvemos 0
    return 0
fi
}

# Llamamos a la función pasando el nombre del paquete
existe $1
# Mostramos 1 o 0 en según elcaso
echo $?
 


Con eso tomaríamos la decisión de que el paquete se ha instalado y no vamos a intentar instalarlo de nuevo,
en caso contrario lo instalaríamos. Es otra función.

¿ Y por qué todo esto ?.  Bueeeno, eso es algo que os tengo que comentar en otro mensaje. Continuara....

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Función Return En Shell Bash 
 
Ok, comprendo lo que intentas hacer, un script para reinstalaciones no?
Yo con el tiempo voy tuneando uno para reinstalar que de vez en cuando le voy haciendo mejoras.
Respecto a instalar o no un paquete (si es que ya lo esta) en el caso de apt el paquete no se reinstala y da un aviso como el siguiente
gambas3 ya está en su versión más reciente....
Así que la conclusion es que para los paquetes pongas dentro del script directamente algo como
sudo apt-get install -y paquete1
sudo apt-get install -y paquete2
...
sudo apt-get install -y paqueteN


Y para el caso que planteas yo verifico si la instancia de instalacion se realiza subre una maquina virtual o real para instalar o no virtualbox por ejemplo.
# Determinacion del tipo de maquina
SYSVIRT=`dmesg | grep "Hypervisor detected"`
if [ -n $SYSVIRT ];then
SYSVIRT="HARD"
else
SYSVIRT="VIRT"
fi

# Instalación de visualización en caso de tratarse de una maquina física
case $SYSVIRT in
        "HARD")
    sudo apt-get install -y virtualbox
esac


Ya nos contaras tu proyecto

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Función Return En Shell Bash 
 
Tincho:

Citar:

Ok, comprendo lo que intentas hacer, un script para reinstalaciones no?


Eso es. Desde que Shordi estuvo comentando esto, me pareció bastante interesante su idea.
La forma de como instalar las aplicaciones cada vez que se crea una instalación nueva del sistema.

Estuve intentando ver la opción "y" de apt y me ha surgido una duda sobre el manual de linux ( man ).
Lo comento en otro mensaje.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Ayuda Con Return Value Datatype Not Specif... ferquies General 3 Domingo, 06 Marzo 2011, 10:41 Ver último mensaje
ferquies
No hay nuevos mensajes Quien Manda Break O Return? v3ctor General 1 Domingo, 25 Diciembre 2016, 20:18 Ver último mensaje
jsbsan
No hay nuevos mensajes Entrecomillado En Shell Bash Shell Mundo Linux 2 Viernes, 14 Junio 2019, 13:26 Ver último mensaje
Shell
No hay nuevos mensajes Problema Con Control De Errores Y Return E... Harpo Controles/Librerías/Componentes 13 Lunes, 27 Abril 2020, 18:22 Ver último mensaje
jguardon
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron