如何在UNIX shell中检查变量是否为数字或包含数字?
if echo $var | egrep -q '^[0-9]+$'; then # $var is a number else # $var is not a number fi
Shell变量没有类型,因此最简单的方法是使用return type test
命令:
if [ $var -eq $var 2> /dev/null ]; then ...
(或者用正则表达式解析它)
没有叉子,没有管道.纯POSIX外壳:
case $var in (*[!0-9]*|'') echo not a number;; (*) echo a number;; esac
(假设数字:=一串数字).如果你要允许有一个领先的正负号-
或+
为好,剥离这样的可选符号:
case ${var#[-+]} in (*[!0-9]*|'') echo not a number;; (*) echo a number;; esac