linux - float 除法 bash

标签 linux bash division floating

我已经阅读了之前所有关于 bash 中 float 除法的帖子,但我无法解决我的问题...

我有这个 bash 脚本:

lengthseq=$(sed -e 's/^\(>\).*//' sequence.fasta | sed '1d' | tr -d "\n" | awk '{ print length }')
lengthcodons=$("$lengthseq/3" | bc -l)

echo $lengthseq
echo $lengthcodons

Lengthseq 没问题。 echo $lengthseq 打印 2275859。

如果我在 konsole 中运行它:

echo "2275859/3" | bc -l
758619.66666666666666666666

没关系。

所以我不明白为什么如果我在我的脚本中尝试它,$lengthcodons 会生成错误。

最佳答案

使用 bc -l 的正确语法是:

lengthcodons=$(bc -l <<< "$lengthseq/3")
echo "$lengthcodons"
758619.66666666666666666666

或者用scale=2

lengthcodons=$(bc -l <<< "scale=2; $lengthseq/3")
echo "$lengthcodons"
758619.66

关于linux - float 除法 bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19891614/

相关文章:

linux - for 循环 - 每 2 小时执行一次文件,输出--> ssh "new server"执行输出命令

database - 统计Linux服务器上的文件夹和文件结构

如果变量属于堆或堆栈,我可以通过 GDB 找到吗?

mysql - 如果不存在则创建表挂起

regex - 在参数 bash 中查找并替换字符串

c++ - 如何初始化一个 div_t 对象?

c# - C# 中的英尺到米转换器坏了?

c - 在 o(1) 中实现 c 二进制除法

linux - i3blocks (i3wm) - 使用 sudo 命令

linux - 使用 bash 将文件夹名称重命名为文件名