如何计算 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)
我想计算 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)