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

何时/如何在测试中使用“==”或“-eq”运算符?

  •  2
  • MakeThingsHappen  · 技术社区  · 11 年前

    在下面的代码中,我想将命令行参数与参数进行比较,但我不确定将参数与参数相比较的当前语法是什么。。即“==”或“-eq”。

    #!/bin/bash
    argLength=$#
    #echo "arg = $1"
    
    if [ argLength==0 ]; then
    #Running for the very first
    #Get the connected device ids and save it in  an array
      N=0
      CONNECTED_DEVICES=$(adb devices | grep -o '\b[A-Za-z0-9]\{8,\}\b'|sed -n '2,$p')
      NO_OF_DEVICES=$(echo "$CONNECTED_DEVICES" | wc -l)
      for CONNECTED_DEVICE in $CONNECTED_DEVICES ; do
           DEVICE_IDS[$N]="$CONNECTED_DEVICE"
           echo "DEVICE_IDS[$N]= $CONNECTED_DEVICE"
           let "N= $N + 1"
      done
      for SEND_DEVICE_ID in ${DEVICE_IDS[@]} ; do
          callCloneBuildInstall $SEND_DEVICE_ID
      done
    elif [ "$1" -eq -b ]; then
      if [ $5 -eq pass ]; then 
          DEVICE_ID=$3
          ./MonkeyTests.sh -d $DEVICE_ID
      else
        sleep 1h
        callCloneBuildInstall $SEND_DEVICE_ID
      fi
    elif [ "$1" -eq -m ]; then 
      echo "Check for CloneBuildInstall"
      if [ "$5" -eq pass ]; then 
          DEVICE_ID=$3
          callCloneBuildInstall $SEND_DEVICE_ID
      else
        echo "call CloneBuildInstall"
        # Zip log file and save it with deviceId
        callCloneBuildInstall $SEND_DEVICE_ID
      fi
    fi
    
    function callCloneBuildInstall {
      ./CloneBuildInstall.sh -d $SEND_DEVICE_ID
    }
    
    3 回复  |  直到 11 年前
        1
  •  7
  •   Ignacio Vazquez-Abrams    11 年前

    从…起 help test :

    [...]

      STRING1 = STRING2
                     True if the strings are equal.
    

    [...]

      arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,
                     -lt, -le, -gt, or -ge.
    

    但无论如何,条件的每个部分都是 [ .

    if [ "$arg" -eq 0 ]; then
    
    if [ "$arg" = 0 ]; then
    
        2
  •  2
  •   shyamupa    11 年前

    为什么不使用类似的

    如果[“$#”-ne 0];那么#参数数不应为零
    echo“用法:”
    传真

        3
  •  1
  •   konsolebox    11 年前

    何时/如何在测试中使用==或-eq运算符?

    简单地说,使用 == 进行词法比较时,也称为字符串比较,但使用 -eq 当进行数值比较时。

    其他形式的 -当量 (相等)为 -ne (不相等), -gt (大于), -ge (大于或等于), -lt (小于),以及 -le (小于或等于)。

    有些人还建议 (( )) .

    示例:

    [[ $string == "something else" ]]
    [[ $string != "something else" ]] # (negated)
    [[ $num -eq 1 ]]
    [[ $num -ge 2 ]]
    (( $num == 1 ))
    (( $num >= 1 ))
    

    始终使用 [[ ]] 结束 [ ] 因为前者跳过了与条件表达式无关的不必要的扩展,如单词分割和路径名扩展。

    推荐文章