Martes, 17 de julio de 2012
Calcular el número de semana dentro del mes en Bash
Para calcular el número de semana dentro de un mes (por ejemplo para saber si un día es el tercer martes de un determinado mes) podemos usar el siguiente comando:
# cal -m $MES $YEAR | sed -n "3,$ p" | sed -n "/$DAY/{=;q;}"
Este comando calcula partiendo de la base de que el primer día de la semana es lunes. Para calcular partiendo del domingo como primer día de la semana, quitaríamos el flag “-m” del comando cal o añadiríamos el flag “-s”.
DAVID FERNANDEZ ACIN Linux bash, fecha
Miércoles, 2 de febrero de 2011
Timeout para un comando en Bash
En algunas ocasiones nos puede interesar lanzar un comando con un timeout para acabar el comando en caso de que se demore más de un tiempo deseado.
Para hacer esto he encontrado un script que nos permite invocar un comando con un timeout. Si el timeout se supera, se termina la ejecución del comando, aunque éste no haya acabado.
La sintaxis es:
# ./timeout3 -t 5 comando parámetros-comando
Parece que en las últimas versiones del paquete coreutils (versión 7) ya se incluirá un comando timeout. Sin embargo, la versión que viene instalada en RH 5 es la 5.97.
DAVID FERNANDEZ ACIN Linux bash, timeout
Lunes, 1 de marzo de 2010
Para hacer nuestros scripts más potentes, a veces nos puede interesar permitir que nuestros parámetros se pasen precedidos de la opción a la que corresponden. Con esto podríamos hacer cosas como:
# miscript -a opciona -b opcionb -d opciond
# miscript -b opcionb -c opcionc
Para hacer esto podemos añadir el siguiente código a nuestro script:
while test -n "$1"; do
case "$1" in
-a)
opciona=$2
shift
;;
-b)
opcionb=$2
shift
;;
-c)
opcionc=$2
shift
;;
-d)
opciond=$2
shift
;;
*)
echo "Unknown argument: $1"
print_usage
exit 0
;;
esac
shift
done
# Grab the command line arguments
#logfile=$1
#bookmark=$2
#critical=$3
#warning=$4
#exclude=$5
exitstatus=$STATE_WARNING #default
while test -n “$1″; do
case “$1″ in
-l)
logfile=$2
shift
;;
-b)
bookmark=$2
shift
;;
-c)
critical=$2
shift
;;
-w)
warning=$2
shift
;;
-e)
exclude=$2
shift
;;
*)
echo “Unknown argument: $1″
print_usage
exit $STATE_UNKNOWN
;;
esac
shift
done
DAVID FERNANDEZ ACIN Linux bash, parámetro, script