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 替换它。
我想通过使用执行一个非常简单的测试:
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 替换它。