2017-04-10 247 views
0

我试图让if语句与bc一起使用来确定文本文件中的数字是否在数字范围内或其外部。我有条件(echoes),我希望在满足(或不满足)标准时触发。IF语句对于数字范围(standard_in)1:语法错误

climo.diff文件:

17.3 

bash代码:

check=`cat climo.diff` 

if (($(bc <<< "${check} < -7.0" || "${check} > 7.0"))); 
then 
echo "CAUTION: Outside acceptable range." 
else 
echo "Within acceptable range." 
fi 

我不断收到以下错误

(standard_in) 1: syntax error 
+0

事实上,语法是错误的。你在'$()'的执行中使用'||'运算符。基本上你试图调用程序'“$ {check}> 7.0”'这是没有任何意义的。我不是'bc'的专家,但是我会做'like bc <<<“$ {check} <-7.0”||。 bc << < "${check} > 7.0“; then'。也许它可以在一个'bc'调用而不是两个。 – vdavid

回答

3

||需要放在引号内,以便它被认为是bc的输入的一部分,而不是shell运算符将bc命令与无效的命令名分开。

if (($(bc <<< "${check} < -7.0 || ${check} > 7.0"))); 

然后

+0

我继续得到相同的错误,但是将双引号的'||'放在双引号中似乎有修复了if语句,它现在可以用于查询数字 – arnpry

+0

'check'的实际值是什么?错误信息来自'bc'。 – chepner

+0

'$ {check}'的实际值是'17.3' 。'bc'可以处理浮点小数,所以我不认为这是问题。 – arnpry