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:
Y guardo todo en un shell script (factorial.sh), y ejecuto:
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,