【问题标题】:Check whether input is number or not in bash [duplicate]在bash中检查输入是否为数字[重复]
【发布时间】:2015-05-11 12:40:05
【问题描述】:

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

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

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

【问题讨论】:

    标签: bash numbers


    【解决方案1】:

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

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

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

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

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


    详情:

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

    【讨论】:

    • 谢谢你给我的程序工作正常。我是 linux 新手,你能解释一下你给出的上述命令吗?
    • 用细节更新问题:)
    【解决方案2】:

    执行此操作的 POSIX 方法(对于整数;浮点数更复杂)是

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

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

    【讨论】:

      猜你喜欢
      • 2018-05-11
      • 1970-01-01
      • 2021-04-22
      • 2018-04-18
      • 2014-11-29
      • 2020-04-30
      • 1970-01-01
      • 2021-11-16
      • 2016-03-30
      相关资源
      最近更新 更多