2

我已经阅读了所有关于 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 会生成并出错。

4

3 回答 3

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
于 2013-11-10T15:42:56.397 回答
2

echo在以下行中缺少

lengthcodons=$(echo "$lengthseq/3" | bc -l)
于 2013-11-10T15:45:24.737 回答
1

这里:

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

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

于 2013-11-10T15:45:42.733 回答