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