Bash - 如果找不到条件命令

时间:2015-03-23 09:53:55

标签: bash if-statement conditional-statements

我想通过使用:

执行一个非常简单的测试
YY=${array[17]}
echo $YY

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

但是这段代码会返回:

0
./script.sh: line 303: $'[\302\2400': command not found

我做错了什么?

2 个答案:

答案 0 :(得分:3)

$'[\302\2400'是bash编写三个字符的字符串的方式:“[”后跟一个不间断的空格(unicode U + 00A0;在HEX UTF-8中是c2 a0,但shell打印出来)在八进制中为302 240),最后为数字“0”。基于此,我很确定您在["$YY"之间有一个不间断的空间,您只需要用普通空格替换它。

答案 1 :(得分:1)

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

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