shell脚本中的划分

时间:2016-07-05 23:22:43

标签: bash shell

我试图在shell脚本中对变量进行简单的划分,但它在某种程度上不起作用。可能在那里我忽略了一些非常基本的东西。下面是一个脚本,用于计算从列表文件中读取的bams文件的bam文件的读取总数。我需要将输出分配给变量并计算比率。这就是我所拥有的:

normNum=100000
while IFS=$'\t' read -r bamfile name; do
#for i in $(ls *.bam)
echo $bamfile
mappedReads="$(samtools idxstats $bamfile | awk '{s+=$3} END {print s}')"
echo $normNum
echo $mappedReads
#scalingFactor="$((normNum / mappedReads))"
#echo $scalingFactor
scalingFactor=`printf "%0.3f\n" $((normNum / mappedReads))`
echo $scalingFactor
done < "${file}_temp"

不同的打印件给出了正确的数字,除了scalingFactor,它给了我0。

merged_DupRem.bam
100000
24226512
0.000

请指点什么?

谢谢..

1 个答案:

答案 0 :(得分:2)

Bash做integer数学,而不是浮点数。您需要使用awkbc来提供浮点输出。例如与bc

scalingFactor=$(printf "scale=3; %d/%d\n" $normNum $mappedReads | bc)