我已阅读过所有关于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生成并出错。
答案 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
。