我试图在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
请指点什么?
谢谢..
答案 0 :(得分:2)
Bash做integer
数学,而不是浮点数。您需要使用awk
或bc
来提供浮点输出。例如与bc
scalingFactor=$(printf "scale=3; %d/%d\n" $normNum $mappedReads | bc)