Bash - 如果未找到条件命令

Bash - if condition command not found

我想通过使用执行一个非常简单的测试:

YY=${array[17]}
echo $YY

if [ "$YY" -ne 0 ]
then
    echo "do.."
else
    echo "here"
fi

但是这段代码 returns :

0
./script.sh: line 303: $'[200': command not found

我做错了什么?

听起来你的数字字符串中有一些奇怪的字符...也许尝试使用 REG_EX 从字符串中提取数字..

YY=${array[17]}
echo "\"$YY\""

#Use reg ex to extract number and leave behind garbage
REG_EX="([0-9]+)" 

if [[ $YY =~ $REG_EX ]]
then
  YY=${BASH_REMATCH[1]}
  if [ "$YY" -ne 0 ]
  then
    echo "do.."
  else
    echo "here"
  fi
else
  echo "Trouble extracting number from YY"
fi

$'[200' 是 bash 编写三字符字符串的方式:一个“[”后跟一个不间断的 space(unicode U+00A0;在十六进制中UTF-8 即 c2 a0,但 shell 将其以八进制打印为 302 240),最后是数字“0”。基于此,我很确定你在 ["$YY" 之间有一个不间断的 space,你只需要用正常的 space 替换它。