Me refería a algo así como que bash es "untyped", así que hay pocas formas [ ¿ninguna? ] de comparar eso...
Teóricamente podrías hacerlo utilizando [[ y ]] ( o (( y )) ) pero las pruebas que he hecho fallan...
--(ferdy@posidon$ ferdy )-- [[ "13" -eq 13 ]] && echo Success
Success
--(ferdy@posidon$ ferdy )-- [[ "13" == 13 ]] && echo Success
Success
--(ferdy@posidon$ ferdy )-- (( "13" == 13 )) && echo Success
Success
[[ y ]] -> Hacen comprobaciones de tipos [ ja.... ]
(( y )) -> Para cosas estrictamente con números [ realmente es por probar, porque en teoría tampoco debería funcionar
]
Me temo que lo que pides no es posible sin hacer 'chapucillas' como la que propone auxiliar.
PD: He probado a hacer lo mismo con BASH utilizando los reemplazos built-in y no lo he conseguido...
---------------------
En Advanced Bash-Scripting Guide proponen
SUCCESS=0
FAILURE=-1
isdigit () # Tests whether *entire string* is numerical.
{ # In other words, tests for integer variable.
[ $# -eq 1 ] || return $FAILURE
case $1 in
*[!0-9]*|"") return $FAILURE;;
*) return $SUCCESS;;
esac
}
-----------------------
Esto parece hacerlo:
SANITIZADA=${VARIABLE//[!0-9]/}
Lo había intentado antes con regexp de sed y claro no me rulaba
al ver el ejemplo del manual, me ha venido otra vez la inspiracion jaja.
Salu2.Ferdy