Comprobar si un número es un entero en un script | Algo de Linux

lunes, 8 de enero de 2018

Comprobar si un número es un entero en un script

Podemos comprobar si un número es un entero consultando el valor de retorno de realizar una operación aritmética mediante expr, teniendo en cuenta que expr devuelve los siguientes posibles valores:
  • 0 si la expresión no es ni nula ni cero
  • 1 si  la expresión es nula o 0
  • 2 para expresiones inválidas
A modo de ejemplo, podemos ver el código del siguiente script que utilizo en monit para monitorizar la temperatura ambiente de los servidores HP Proliant de mi centro:
#!/bin/sh
# Instalar el paquete hp-health
AMBTEMP=`hpasmcli -s "show temp" | grep 'AMBIENT' | awk '{print substr ($3,0,2)}'`
# echo $AMBTEMP # for debug only
expr $AMBTEMP + 0 1>/dev/null 2>&1
ESTADO=$?

if test $ESTADO -lt 2; then
  exit $AMBTEMP
fi
Como podéis ver, sumamos 0 al valor de la variable $AMBTEMP y obtenemos el código de retorno de la operación en la variable $ESTADO. Si el valor es menor que 2 (es decir, el valor de retorno es 0 o 1), el script devolverá la temperatura.
Publicado por primera vez en http://enavas.blogspot.com.es

2 comentarios:

Osqui dijo...

Yo uso la capacidad que tienen, en Bash, los condicionales escritos con [[ y ]] de usar el operador =~ , el cual permite comparar un valor dado con una expresión regular (en este caso, del tipo [0-9]+ o similar

Esteban M. Navas Martín dijo...

Perfecto! Hay varias formas de conseguir lo mismo.