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 を出力します。

コンソールで実行すると:

echo "2275859/3" | bc -l
758619.66666666666666666666

それも大丈夫です。

したがって、スクリプトで試してみると、 $lengthcodons が生成されてエラーになる理由がわかりません。

4

3 に答える 3

3

using の正しい構文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 に答える