代码之家  ›  专栏  ›  技术社区  ›  Greg

使用bash选择一个大于0小于4的整数

  •  0
  • Greg  · 技术社区  · 4 年前

    我编写了一个bash脚本,允许用户通过输入索引从数组中选择文件名。这很好,只是我现在需要一个函数来验证用户输入的数字。我使用shellcheck测试了这个函数,这让它变得非常清晰。

    #! /bin/bash
    validateRange () {
    if (( "$PICK" > "0" )) && (( "$PICK" <= "$LIMIT" )) then 
        echo "valid number"
    fi
    }
    (( LIMIT=4 ))
    (( PICK=2 ))
    validateRange "$PICK" "$LIMIT"
    

    shellcheck 把一切都弄清楚了

    $ shellcheck myscript
    No issues detected!
    
    $
    

    但是,在我的系统中不运行相同的代码 .bash_functions script .

    .bash_functions: line 201: syntax error near unexpected token `then'
    .bash_functions: line 201: `  if (( "$PICK" > "0" )) && (( "$PICK" <= "$LIMIT" )) then '
    

    我不确定我的代码出了什么问题。在bash中还有其他方法可以实现这一点吗?

    0 回复  |  直到 4 年前
        1
  •  1
  •   Zois Tasoulas    4 年前

    此脚本的正确版本可能是:

    #!/bin/bash
    
    validateRange () {
      if (( "$1" > 0 )) && (( "$1" <= "$2" ))
      then
        echo "valid number"
      fi
    }
    
    declare -i LIMIT
    LIMIT=4
    declare -i PICK
    PICK=2
    validateRange "$PICK" "$LIMIT"
    
        2
  •  0
  •   Frederick Zhang    4 年前

    尝试 [ "$PICK" -gt 0 ] .还有很多其他问题。我建议你坐下来通读一本Bash教程,这些问题非常基本和明显。

    shellcheck只是一根短绒。如果你的语法已经非常错误,它就不起作用了。你可以和它一起使用 https://github.com/bash-lsp/bash-language-server/ .

    推荐文章