Ejecutar en un Shell Script una u otra acción según el día de la semana que se ejecute

Con el comando date podemos saber el día de la semana que es hoy con diferentes formatos.

Mirando la documentación de date con:

date --help

Nos devuelve entre otras líneas estas referentes a los días de la semana:

%a   el nombre local abreviado de la semana (p. ej., dom)
%A   el nombre local completo de la semana (p. ej., Domingo)
%u   día de la semana (1..7); 1 representa lunes
%w   el día de la semana (0..6);  0 representa Domingo

Estoy escribiendo este artículo un viernes y ejecuto este script de prueba:

#!/bin/bash

date +%a
date +%A
date +%u
date +%w

Que me devuelve:

vie
viernes
5
5

Podemos tener un problema si el sistema donde se vaya a ejecutar un script usando %a o %A no está en español. Por lo tanto, elegiré entre +%u o +%w.

Voy a usar +%u, especialmente porque me facilita saber cuándo es fin de semana, pero que cada uno elija el formato que quiera.

Veamos cómo hacer que se ejecute distinta acción si hoy es sábado o domingo que si es cualquier otro día:

#!/bin/bash

if [ $(date +%u) -ge 6 ] 
then
    echo Hola, $USER, feliz fin de semana.
else
    echo Hola, $USER.
fi

O, si queremos una acción individual para cada día, podemos hacerlo con case:

#!/bin/bash

day=$(date +%u)

case $day in
    1)
        echo $USER, hoy es lunes, no te olvides de las tareas del comienzo de semana. 
        ;;
    2)
        echo Hoy es martes.
        ;;
    3)
        echo Miércoles.
        ;;
    4)
        echo Feliz jueves, $USER.
        ;;
    5)
        echo Es viernes, $USER. Revisa las tareas de cierre de semana para poder disfrutar del fin de semana.
        ;;
    6)
        echo Disfruta del sábado.
        ;;
    7)
        echo Pasa un feliz domingo.
        ;;
esac

 

 

 

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.