【问题标题】:Bash script, comparing numbersBash 脚本,比较数字
【发布时间】:2014-04-15 09:22:54
【问题描述】:

是否可以在不设置之前将$ip_choice与数字进行比较?

#!/bin/bash
ip_choice=999
while ! (( $ip_choice <= 233 ))
  do 
    read -p "Enter a valid IP (1-256): " ip_choice
  done

它就是这样工作的——只是我想知道是否有更优雅的可能性:-)。

【问题讨论】:

    标签: bash shell ubuntu


    【解决方案1】:
    #!/bin/bash
    
    while read -r -p "Enter a valid IP (1-256): " ip_choice; do
         (( ip_choice >= 1 && ip_choice <= 256 )) && break
    done    
    echo "${ip_choice}"
    

    $ ./t.sh
    Enter a valid IP (1-256): -1
    Enter a valid IP (1-256): 0
    Enter a valid IP (1-256): 257
    Enter a valid IP (1-256): abc
    Enter a valid IP (1-256): 20
    20
    

    【讨论】:

      【解决方案2】:

      你可以使用until:

      until ((ip_choice >=1 && ip_choice <= 256)); do
        read -p "Enter a valid IP (1-256): " ip_choice;
      done
      

      引用help until:

      until: until COMMANDS; do COMMANDS; done

      Execute commands as long as a test does not succeed.
      
      Expand and execute COMMANDS as long as the final command in the
      `until' COMMANDS has an exit status which is not zero.
      
      Exit Status:
      Returns the status of the last command executed.
      

      例如:

      $ until ((ip_choice >=1 && ip_choice <= 256)); do
      >   read -p "Enter a valid IP (1-256): " ip_choice;
      > done
      Enter a valid IP (1-256): 0
      Enter a valid IP (1-256): 298
      Enter a valid IP (1-256): 242
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-19
        • 1970-01-01
        • 2014-02-03
        • 2020-01-04
        • 1970-01-01
        • 2013-02-21
        • 2021-03-08
        • 2016-01-08
        相关资源
        最近更新 更多