Shell [:-ne:应为一元运算符
我正在尝试使用一个脚本来搜索数组中的某个变量。不幸的是,我正在运行的系统会根据当时的其他变量更改数组的顺序。我知道我要查找的前七个字符将是RPT_NUM,所以我尝试了以下while循环,但我一直得到错误[:-ne:应为一元运算符Shell [:-ne:应为一元运算符,shell,while-loop,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}" ech
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
我是一名新手,仍在学习,因此任何帮助都将非常有用。尝试将您的代码更改为以下代码:
#!/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
while[“$CURVAR”==“RPT_NUM”]
CURVAR=“${VAR:0:7}”
...
STATUS=“${VAR:-1}”
在[
之后需要一个空格。另外,CURVAR=echo“${VAR:0:7}”等。不要做我认为他们会做的事。我可以推荐吗?可能重复感谢您的建议,我将签出shellcheck.net。另外,添加空格后,我现在得到:[::整数表达式expected@KB3BYJ-ne
用于数值比较。运行man[
自己计算其余部分。CURVAR=echo“${VAR:0:7}”
仍然是胡说八道。