在bash中检查输入是否为数字

时间:2015-03-10 06:39:03

标签: bash numbers

我想编写程序来检查给定输入是否为数字。任何人都可以帮助我吗?

 if [ $Number -ne 0 -o $Number -eq 0 2>/dev/null ]
 then ...

以及-o代表上述命令的内容?

2 个答案:

答案 0 :(得分:2)

-o运算符。因此,您的测试检查您的号码是否不等于0或者它是否等于0。

(所以它应该总是返回true)。

要检查它是否为数字,您可以使用正则表达式:这应该有效:

[[ "$number" =~ ^[0-9]+$ ]]

要查看所有可用标记的列表,您应该查看man test


<强>详细信息:

  • [[是一个扩展的bash测试命令。它支持的运算符多于test/[
  • =~再次将第一个参数与正则表达式进行比较
  • ^[0-9]+$是正则表达式。 ^是字符串开头的锚点,$表示结尾。 [0-9]表示0到9之间的任何字符,而+表示重复最新模式

答案 1 :(得分:1)

POSIX方式(对于整数;浮点数更复杂)是

 case $number in
   (*[^0-9]*) printf '%s\n' "not a number";;
   ()         printf '%s\n' "empty";;
   (*)        printf '%s\n' "a number";;
 esac

这适用于任何Bourne shell,与[[ ... ]]构造不同,后者是不可移植的。