Ada*_*eld 22
if echo $var | egrep -q '^[0-9]+$'; then
# $var is a number
else
# $var is not a number
fi
Run Code Online (Sandbox Code Playgroud)
Pio*_*cki 17
Shell变量没有类型,因此最简单的方法是使用return type test命令:
if [ $var -eq $var 2> /dev/null ]; then ...
Run Code Online (Sandbox Code Playgroud)
(或者用正则表达式解析它)
Jen*_*ens 14
没有叉子,没有管道.纯POSIX外壳:
case $var in
(*[!0-9]*|'') echo not a number;;
(*) echo a number;;
esac
Run Code Online (Sandbox Code Playgroud)
(假设数字:=一串数字).如果你要允许有一个领先的正负号-或+为好,剥离这样的可选符号:
case ${var#[-+]} in
(*[!0-9]*|'') echo not a number;;
(*) echo a number;;
esac
Run Code Online (Sandbox Code Playgroud)
在启用了 extglob 选项的 ksh93 或 bash 中:
if [[ $var == +([0-9]) ]]; then ...
Run Code Online (Sandbox Code Playgroud)