2016-08-24 497 views
0

我想計算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 

它既不表現出任何價值,也不執行這個腳本時終止。如果你這樣做,因爲它是單引號內

+0

爲什麼你不能?是一個錯誤阻止你?什麼阻礙了你? – Li357

+0

它不終止.. – Kay

+0

可能的重複[如何在awk腳本中使用shell變量](http://stackoverflow.com/questions/19075671/how-to-use-shell-variables-in-awk-script) – tripleee

回答

3

awk會給你一個N1非法字段名。 另外,爲避免awk不斷讀取標準輸入,您應該將/dev/null作爲文件。然後:

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

而不是開始一個新的進程來計算文件中的記錄,然後把它們遞過來awk,我建議你讓awk指望它在變NR反正做記錄本身。因此,您的整個腳本將變爲:

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