【问题标题】:IF Statement For Number Range (standard_in) 1: syntax error数字范围 (standard_in) 1 的 IF 语句:语法错误
【发布时间】:2017-04-10 12:05:10
【问题描述】:

我正在尝试让 if 语句与 bc 一起使用,以确定文本文件中的数字是在数字范围内还是在数字范围之外。我有条件(echoes) 我想在满足(或不满足)条件时触发。

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

【问题讨论】:

  • 确实语法错误。您在$() 的执行中使用|| 运算符。基本上你试图调用程序"${check} &gt; 7.0",这没有任何意义。我不是bc 的专家,但我会做类似if bc &lt;&lt;&lt; "${check} &lt; -7.0" || bc &lt;&lt;&lt; "${check} &gt; 7.0"; then 的事情。也许可以在一次bc 调用中完成,而不是两次。

标签: bash unix if-statement bc


【解决方案1】:

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

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

然后

【讨论】:

  • 我仍然遇到同样的错误,但是将 || 放在双引号旁边似乎已经修复了 if 语句,并且它现在似乎可以用于询问数字。
  • check 的实际值是多少?错误消息来自bc
  • ${check}的实际值为17.3bc 可以处理浮点小数,所以我不认为这是这里的问题。
猜你喜欢
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 1970-01-01
  • 2012-03-27
  • 2016-08-17
相关资源
最近更新 更多