07. Bash: argumentos y funciones desde línea de comandos

Publicado por

Funciones

Como en cualquier lenguaje de programación, en Bash también se pueden crear funciones para factorizar código y hacer scripts más eficientes.

Sintaxis

function nombre_funcion {
  #Comandos
}

Ejemplos:

Función para crear un directorio.

function crea_directorio {
  mkdir mi_directorio
}

Función para limpiar la terminal.

function limpia_terminal {
  clear
}

En script quedarían de la siguiente forma:

#!/bin/bash
function crea_directorio {
  echo "Creando directorio"
  mkdir mi_directorio
}

function limpia_terminal {
  echo "Limpiando pantalla"
  clear
}

crea_directorio
limpia_terminal

Argumentos

En Bash se pueden usar argumentos desde línea de comandos que son enviados a un script como variables.

Las cuales son identificadas por números:

[$0] Representa el nombre del script que se invocó desde la terminal.

[$1] Es el primer argumento desde línea de comandos.

[$2] Es el segundo y así sucesivamente.

[$#] Contiene el número de argumentos que son recibidos desde la línea de comandos.

[$*] Contiene todos los argumentos que son recibidos desde la línea de comandos, guardados en la mismas variable.

Nota: las variables $# y $* no incluyen a la variable $0.

Ejemplo:

#!/bin/bash

#Función para mostrar mensaje
function muestra_uso {
  echo "$0 directorio_origen directorio_destino"
  exit 1
}

#Programa principal

if [$# -ne 2]; then
  muestra_uso
else #Hay dos argumentos
  if [-d $1]; then
    directorio_origen=$1
  else
    echo 'El directorio de origen no es válido'
    muestra_uso
  fi
  if [-d $2]; then
    directorio_destino=$2
  else
    echo 'El directorio destino no es válido'
    muestra_uso
  fi
fi

echo "Directorio origen es ${directorio_origen}\n"
echo "Directorio destino es ${directorio_destino}\n"

Para probarlo, se ejecutan los siguientes comandos:

mkdir origen destino
sh muestra_mensaje origen destino
sh muestra_mensaje no_origen no_destino

Nota: los argumentos de una función en Bash, se comportan de la misma forma que los argumentos desde línea de comandos.

Ejemplo:

Función con parámetros.

#!/bin/bash
function imprime_palabras {
  echo $1 $2
}

function salir {
  exit
}

imprime_palabras Hola mundo
salir

Si se quieren imprimir n cantidad de palabras entonces se utiliza:

echo $@

Espero esta información te haya sido de utilidad. En la siguiente nota te platicaré sobre Bash: ciclos (for). Hasta entonces.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *