viernes, 2 de junio de 2017

Usando parámetros posicionales con funciones de shell

Además de usar los parámetros posicionales para pasar argumentos a scripts de shell, pueden usarse para pasar argumentos a funciones de shell. Para comprobarlo, convertiremos el script file_info en una función de shell:

file_info () {

    # file_info: function to display file information

    if [[ -e $1 ]]; then
        echo -e "\nFile Type:"
        file $1
        echo -e "\nFile Status:"
        stat $1
    else
        echo "$FUNCNAME: usage: $FUNCNAME file" >&2
        return 1
    fi
}

Ahora, si un script que incorpora la función de shell file_info llama a la función con un argumento de nombre de archivo, el argumento se pasará a la función.

Con esta capacidad, podemos escribir muchas funciones de shell útiles que no sólo pueden ser usadas con scripts, si no también dentro del archivo .bashrc.

Fíjate que la variable PROGNAME ha cambiado a la variable de shell FUNCNAME. El shell actualiza automáticamente esta variable para mantener el control de la función de shell ejecutada actualmente. Fíjate que $0 siempre contiene la ruta completa del primer elemento de la linea de comandos (es decir, el nombre del programa) y no contiene el nombre de la función de shell como podríamos esperar.

No hay comentarios:

Publicar un comentario