我已经阅读了之前所有关于 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/