首页 > 解决方案 > 如果:使用小于号时的数字格式错误

问题描述

我对 CSH 完全陌生,所以如果这是一个微不足道的问题,我深表歉意。我有一个名为“accuracy”的变量,我从文件中读取它,我想将它与其他值进行比较。这是一些代码:

set accuracy = `cat results.dat | tail -1 | cut -c1-20`
echo '#####ACCURACY: '$accuracy
set solved = 0
if ($accuracy <= 0.000000008) set solved = 1

如果我这样做,我会收到此错误

if:格式错误的数字。

但是,如果我用这个替换最后一行:

if ( $accuracy == 0.000000000000) set solved = 1

一切正常。有人可以告诉我我做错了什么吗?第一个回声的输出是这样的:

精度:0.000000000007

标签: csh

解决方案


这根本不是一个 bash 脚本——它是一个 csh 脚本。bash 版本可能如下所示:

#!/usr/bin/env bash
accuracy=$(tail -1 <results.dat | cut -c1-20)
echo "#####ACCURACY: $accuracy"
solved=0
if [[ $(bc <<<"$accuracy <= 0.000000008") = 1 ]]; then
  solved=1
fi

请参阅BashFAQ #22,了解在 bash 中进行浮点数学运算的讨论。


推荐阅读