【问题标题】:Comparision in shell scriptshell脚本中的比较
【发布时间】:2014-01-23 09:26:45
【问题描述】:

我在 shell 脚本中做比较

              if [ $# -lt 10  ]
              then
              echo "PROCEED"
              else 
              echo "STOP"

我将脚本运行为 ./test.sh 1 2 3 4 5 6 7 8 9 10 11 然后输出为“STOP” 如果我使用“,而不是使用“-lt”

              if [ $# < 10  ]
              then
              echo "PROCEED"
              else 
              echo "STOP"

那么输出是“PROCEED”。

我的问题是如果我比较不大于 10 的 shell 脚本会导致此问题。 请指导我这个

【问题讨论】:

    标签: shell unix comparison sh comparison-operators


    【解决方案1】:

    Advanced Bash Shell Scripting Guide - 7.3. Other Comparison Operators中所见:

    字符串比较

    小于,按 ASCII 字母顺序排列

    如果 [[ "$a"

    如果 [ "$a" \

    请注意,“

    所以这样做的方法是使用-lt 或者,再次引用:

    整数比较

    -lt 小于

    如果 [ "$a" -lt "$b" ]

    小于(在双括号内)

    (("$a"

    【讨论】:

    • 如果我使用 if [ "$a" \
    • 不,它只适用于字符串比较。它可能会得到很好的输出,但只是基于 ASCII。我的意思是你必须使用lt
    • 我用 "(" 括号代替 "[" 这个 . if (( $#
    • 太棒了!我将更新我的帖子以反映这一点,因为它总是在我提供的链接中指出。
    【解决方案2】:

    比较数字时需要使用

    【讨论】:

    • 如果我使用 "
    【解决方案3】:

    请注意,Bash 使用内置的“test”实现,man test -> link

    这里也有说明 -> Stackoverflow Link

    尖括号通常用于命令重定向! link

    如果您要比较整数,请使用 -lt 表示小于。

    【讨论】:

      猜你喜欢
      • 2013-12-14
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2016-09-15
      • 2021-10-12
      • 1970-01-01
      相关资源
      最近更新 更多