csh - 如果:使用小于号时的数字格式错误
问题描述
我对 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
解决方案
这根本不是一个 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 中进行浮点数学运算的讨论。
推荐阅读
- mmu - 如何理解图中的ARMv8 AArch64 MMU表描述符格式?
- python - Django:将模型对象传递给 context_processors
- java - 如何减少 Hibernate Spring 中的 DB 命中数
- java - 有没有更优化的方式来遍历这个列表?
- php - Artisan::call('config:cache') 无法从控制器工作。从控制器运行它的可能方法是什么
- angular - 延迟加载模块时Angular 12路由不起作用
- html - 无论我做什么,我都无法将字母 O 居中
- arrays - 如何在 bash 脚本中声明 n+1 个元素的数组?
- c# - 在 GeckoFx C# 中挂钩所有请求的响应正文
- python - 我该如何解决这个问题?