如何计算 shell 中的百分比

how to calculate percentage in shell

我想计算 shell 中的百分比。但我做不到。我的剧本是

#!/bin/bash
#n1=$(wc -l < input.txt) #input.txt is a text file with 10000 lines
n1=10000
n2=$(awk '{printf "%.2f", $n1*0.05/100}')
echo 0.05% of $n1 is  $n2

执行此脚本时既不显示任何值也不终止

如果您这样做,

awk 会给您一个 n1 非法字段名称,因为它在单引号内。 此外,为了避免 awk 继续读取标准输入,您应该将 /dev/null 作为文件传递。那么:

n2=$(awk -v n1="$n1" 'BEGIN {printf "%.2f", n1*0.05/100}' /dev/null)

与其启动一个新进程来计算文件中的记录然后将其传递给 awk,我建议您让 awk 计算它本身在变量中所做的记录NR。因此,您的整个脚本将变为:

percentage=$(awk 'END{print NR*0.05/100}' input.txt)