漂浮数字划分bash

时间:2013-11-10 15:40:09

标签: linux bash division floating

我已阅读过所有关于bash浮点数除法的帖子,但我无法解决我的问题......

我有这个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生成并出错。

3 个答案:

答案 0 :(得分:3)

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

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

scale=2

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

答案 1 :(得分:2)

您在以下行中遗漏了echo

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

答案 2 :(得分:1)

下面:

lengthcodons=$("$lengthseq/3" | bc -l)

您正在执行第"2275859/3" | bc -l行并将结果放入lengthcodons,忘记了echo