[:-ne:一元运算符预期

时间:2018-04-22 15:47:29

标签: shell while-loop

我正在尝试处理将在数组中搜索某个变量的脚本。不幸的是,我运行的系统根据当时的其他变量改变了数组的顺序。我知道我正在寻找的前七个字符将是RPT_NUM所以我尝试了以下while循环,但我不断收到错误[:-ne:一元运算符预期

START=5
MYVAR=( $(/usr/sbin/asterisk -rx "rpt showvars 47168"))

#VAR=${MYVAR[3]}

VAR="${MYVAR[START]}"

CURVAR= echo "${VAR:0:7}"
echo $VAR

while ["$CURVAR" -ne "RPT_NUM" ]
do

        let START+=1
        CURVAR= echo "${VAR:0:7}"
        echo "End loop"
done
STATUS=echo "${VAR: -1}"

echo $STATUS

我很新,还在学习,所以任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

尝试将您的代码更改为以下代码:

#!/usr/bin/env bash

START=5
MYVAR=( $(/usr/sbin/asterisk -rx "rpt showvars 47168"))

#VAR=${MYVAR[3]}

VAR="${MYVAR[START]}"

CURVAR="${VAR:0:7}"
echo $VAR

while [ "$CURVAR" == "RPT_NUM" ]
do

  let START+=1
  CURVAR="${VAR:0:7}"
  echo "End loop"
done
STATUS="${VAR:-1}"

echo $STATUS
  1. 将while循环中的条件表达式更改为:
  2. while [ "$CURVAR" == "RPT_NUM" ]
    
    1. 将子shell表达式更改为:
    2. CURVAR="${VAR:0:7}"   
      ...    
      STATUS="${VAR:-1}"