Archivo

Entradas Etiquetadas ‘bash’

CalcularSemanaMes

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”.

Linux ,

TimeoutComandoBash

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.

Linux ,

Bash: captura de parámetros en un script

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

Linux , ,