【问题标题】:test for an argument being a 5 digit integer测试参数是否为 5 位整数
【发布时间】:2013-01-10 00:31:44
【问题描述】:

我想测试我的 bash 脚本中的参数是否为 5 位整数。

if [ "$1" == [0-9][0-9][0-9][0-9][0-9] ]; then
    echo "first arg is 5 digits"
else
    echo "not 5 digits"

这对我不起作用,有没有更简单的方法来做到这一点,即使用 expr 函数?

【问题讨论】:

    标签: regex linux bash unix


    【解决方案1】:

    测试这种表达式时必须使用双括号。

    【讨论】:

    • +1。单括号不理解 == 进行模式匹配。
    【解决方案2】:
    case "$1" in
      [0-9][0-9][0-9][0-9][0-9]) echo "first arg is 5 digits" ;;
      *) echo "not 5 digits" ;;
    esac
    

    【讨论】:

      【解决方案3】:

      CONDITIONAL EXPRESSIONSman bash

      if [[ "$1" =~ ^[0-9]{5}$ ]]; then
          echo "first arg is 5 digits"
      else
          echo "not 5 digits"
      fi
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-17
        • 1970-01-01
        • 1970-01-01
        • 2011-01-13
        相关资源
        最近更新 更多