Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/07/2002, 06:50
Avatar de lical
lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 23 años, 6 meses
Puntos: 0
Shell Scripting: Funciones.

No soportaba editar los scripts de los /etc/init.d de RedHat o Debian así que me puse manos a la obra con la primera parte de shell scripting de RUTE. He ido ejecutando los ejemplos y comprendiéndolos, y mi objetivo está casi del todo conseguido, ya no hay script que no comprenda (incluidos los xinitrc de RedHat

Pero en el útlimo apartado de esa sección del libro habla de las funciones, y hay cosas que no me quedan claras. Por ejemplo:

Código:
 function factorial ()
{
        N=$1
        A=1
        while test $N -gt 0 ; do
                A=`expr $A '*' $N`
                N=`expr $N - 1`
        done

        echo $A
}
¿Es que puede tomar la definición de la función el $1 (primer argumento) directamente? Es que en PHP había que decirle que esa variable era global... No lo entiendo, porque si le añado debajo de la definición de la función una línea para que la ejecute:

Código:
 factorial
Y guardo todo en un shell script (factorial.sh), y ejecuto:

Código:
 $ ./factorial.sh 4
Me devuelve:

Código:
 ./factorial.sh: test: -gt: unary operator expected
1
Creo que no puede tomar el valor del primer argumento dentro de la función. ¿Puede alguien explicarme cómo funcionan las variables globales en el shell scripting?

Gracias por vuestro tiempo.


Un saludo,