Saber si una variable es numérica en Shell Script
Para saber si una variable es numérica en Shell Script podemos comprobar con una expresión regular si todos sus caracteres son numéricos. Lo podríamos hacer así:
[[ "$variable" =~ ^[0-9]+$ ]]
Donde indicamos que entre el comienzo (^) y el final ($) hay una o más veces (+) un elemento comprendido en el rango de 0 a 9 ([0-9]).
Si hacemos esta comprobación en un if, nos devolverá verdadero si todos los caracteres son numéricos y falso si alguno no lo es.
Podemos recorrer una lista con varios valores y comprobar uno a uno cuáles nos indica que es un valor numérico y cuáles no:
#!/bin/bash for var in 2 hola 32 mundo 123456 . , do if [[ "$var" =~ ^[0-9]+$ ]] then echo $var es un número else echo $var no es un número fi done
Que nos devuelve:
2 es un número hola no es un número 32 es un número mundo no es un número 123456 es un número . no es un número , no es un número