Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: ithory en 6 Noviembre 2012, 23:49 pm



Título: [BASH] usar return en bash
Publicado por: ithory en 6 Noviembre 2012, 23:49 pm
Hola buenas, esta función cambia el pass de un pequeño programa que estoy haciendo:



Código
  1. function cambiarpass(){
  2. c=0
  3. while (test $c -eq 0)
  4. do
  5. echo "Introduce una contraseña: "
  6. read pass
  7. echo "Confirma la contraseña: "
  8. read pass2
  9.  
  10. if [ $pass = $pass2 ]
  11. then
  12. c=1 #para salir del bucle
  13. fi
  14.  
  15. if [ $pass != $pass2 ]
  16. then
  17. echo "Las contraseñas no coindicen"
  18. echo ""
  19. fi
  20.  
  21. done #fin while
  22. return $pass
  23. }

Yo ahora si quiero usar esa nueva contraseña (variable pass) en el programa principal, como debería llamar a la funcion?

he probado: (en el main)

var=cambiarpass
o
var=$cambiarpass

pero ninguna funciona ya que en var deberia tener el valor de $pass.
como sería?

Saludos y gracias!


Título: Re: [BASH] usar return en bash
Publicado por: ithory en 7 Noviembre 2012, 19:07 pm
Bueno al parece esto no se puede hacer, la solucion que he encontrado a sido crear una variable global y al final de esa funcion darle el valor.
Asi se consigue el return.




Título: Re: [BASH] usar return en bash
Publicado por: -Myx- en 16 Noviembre 2012, 04:38 am
Por defecto, en bash, todas las variables declaradas fuera o dentro de una función son globales.

Si bien podes hacerla local anteponiendo "local" a la declaración de la variable.