Snippets programación bash

Salida a stdout o logger

A stdout o logger

Mirar sección parámetros

Miscelanea

# exit when any command fails
set -e

Manejar parámetros

if [ $# -eq 0 ]
  then
    echo "No arguments supplied"
fi
# el : que sigue a un argumento representa el parámetro del argumento
# si no hay un ":" es un argumento sin parámetro
# sólo se permiten argumentos de una sola letra
while getopts ":d:c" opt; do
    case "$opt" in
    c)  # Comprovamos si ha activado la opcion de ejecutar a través de cron
        # Establecemos como salida de todos los pipes al logger
        exec &> >(logger --tag "$(basename $0)")
        ;;
    d)  #Opción para determinal dominio a actualizar
        DOMINIO=${OPTARG}
        ;;
    esac
done

[ -z "$DOMINIO" ] && echo "Falta parámetro: nombre de dominio (-d)" && exit 2
 

Enviar un correo con el resultado de un comando

  1. Es necesario instalar ssmtp y bsd-mailx
# Para ejecución directa:
/usr/games/fortune -a | /usr/bin/mail hugo@hugo.cat -s "Fortune del $(date +\%d/\%m/\%Y)"

# Para lanzar a batch:
echo "/usr/bin/speedtest-cli --simple | /usr/bin/mail root -s \"Speedtest de $(date +\%d/\%m/\%Y)\"" | batch
 

Varios

Comprovación de existencia de diversos elementos

# ¿Existe fichero?
[ ! -f "$FICHERO_PERMISOS" ] && echo "Fichero de permisos no encontrado" && exit 2

# ¿Existe directorio?
[ ! -d "$DIRECTORIO_BASE" ] && echo "Directorio objetivo no encontrado" && exit 2

# ¿Existe comando?
[ ! $(command -v wget) ] && echo "wget no encontrado" && exit 2

listado en https://stackoverflow.com/a/21164441