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

Sri*_*wer 2 bash numbers

我想编写程序来检查给定的输入是否为 number。谁能帮我?

 if [ $Number -ne 0 -o $Number -eq 0 2>/dev/null ]
 then ...
Run Code Online (Sandbox Code Playgroud)

-o在上面的命令中代表什么?

Adr*_*sbe 5

-oor运算符。因此,您的测试会检查您的数字是否不等于 0 或是否等于 0。

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

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

[[ "$number" =~ ^[0-9]+$ ]]
Run Code Online (Sandbox Code Playgroud)

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


细节:

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