我想通过使用:
执行一个非常简单的测试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
我做错了什么?
答案 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