Bash 整数预期错误…空行?
执行以下操作时,我得到一个“整数表达式预期错误”:Bash 整数预期错误…空行?,bash,if-statement,integer,Bash,If Statement,Integer,执行以下操作时,我得到一个“整数表达式预期错误”: NM=$(<file) if test $NM -gt 0 then echo "workflow 1 would follow here" else if test $NM -lt 0 then echo "workflow 2 would go after this" else echo "something else" fi fi NM=$(您要测试的${NM}大于零(例如$NM中的字符数)。当前您正在根据0测试字符串的内容,b
NM=$(<file)
if test $NM -gt 0
then
echo "workflow 1 would follow here"
else
if test $NM -lt 0
then
echo "workflow 2 would go after this"
else
echo "something else"
fi
fi
NM=$(您要测试的${NM}
大于零(例如$NM
中的字符数)。当前您正在根据0
测试字符串的内容,bash告诉您它需要一个数字。这同样适用于需要数字的每个测试
如果要测试单词“$NM”
是否大于0
或小于0
请使用If((NM>0));然后…
或If((NM<0));然后…
您也可以使用较旧的test
表达式if[“$NM”-gt 0];然后…
或如果test“$NM”-gt 0;然后…
请注意,如果“$NM”
不能解释为数字,您将生成错误。(您可以重定向stderr
以避免这种情况,但这并不明智).在阅读了一些评论之后,我想知道您是否得到了一些不可打印的字符。我通过在\n之前添加一个\r来测试这一点,它最终能够复制。这是您的代码的清理版本,使用tr删除一些额外的字符
NM=$(tr -cd '[:graph:]' <file)
if [[ $NM -gt 0 ]]; then
echo "workflow 1 would follow here"
elif [[ $NM -lt 0 ]]; then
echo "workflow 2 would go after this"
else
echo "something else"
fi
NM=$(tr-cd'[:graph:'这有点奇怪。你能添加echo-n“$NM”的输出吗| hextump-C
刚读完?我很好奇你在说什么循环。是有循环,还是你把你的条件语句称为循环?我终于能够重现并解决你的问题。答案如下,请记住在你的问题解决后选择一个答案。他也没有加载文件的内容是的,我看到了这一点,并添加了第二组测试。$(
与$(cat file)相同(且速度更快)
,请参见。我明白了——我的错误是我的测试文件中已经有一个hexdump,所以我认为它像'exec 3>$file'一样工作,解决了这个问题。谢谢!我必须承认,有点生疏,我从来没有想过使用tr