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"
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 $?"
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"
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))
}
# valor=$(($1 + $2))
return $(($1 + $2))
}
Saludos