使用 bash 脚本从另外两个变量的除法中定义一个新变量
Defining a new variable from division of another two variables with bash script
我有 2 个变量,它们是来自 csv 数据集的 up_votes 和 down_votes。我正在尝试创建一个新变量作为 up_votes / total_votes 的百分比。例如,up_votes=296 down_votes=255,我的输出应该是 53.7 但我得到了 25600。
这是我的方程式。
x=$col3
y=$col3+$col4
z=($x/$y)*100
ans=$z
由于bash不支持浮点运算,需要使用外部程序进行计算
#!/bin/bash
votes="topic1,0,0 topic2,296,255 topic3,3,4"
for vote_data in $votes ; do
topic=`echo $vote_data|sed -r 's/([^,]*),([^,]*),(.*)//'`
up_votes=`echo $vote_data|sed -r 's/([^,]*),([^,]*),(.*)//'`
down_votes=`echo $vote_data|sed -r 's/([^,]*),([^,]*),(.*)//'`
# echo "$topic , up: $up_votes, down: $down_votes"
total=`awk "BEGIN {print ($up_votes+$down_votes)}"`
if [ $total -eq 0 ];then
ans=divbyzero
else
ans=`awk "BEGIN {print 100.0*$up_votes/( $up_votes+$down_votes)}"`
fi
echo "$topic $ans [ $up_votes / $down_votes ]"
done
输出:
topic1 divbyzero [ 0 / 0 ]
topic2 53.7205 [ 296 / 255 ]
topic3 42.8571 [ 3 / 4 ]
我有 2 个变量,它们是来自 csv 数据集的 up_votes 和 down_votes。我正在尝试创建一个新变量作为 up_votes / total_votes 的百分比。例如,up_votes=296 down_votes=255,我的输出应该是 53.7 但我得到了 25600。 这是我的方程式。
x=$col3
y=$col3+$col4
z=($x/$y)*100
ans=$z
由于bash不支持浮点运算,需要使用外部程序进行计算
#!/bin/bash
votes="topic1,0,0 topic2,296,255 topic3,3,4"
for vote_data in $votes ; do
topic=`echo $vote_data|sed -r 's/([^,]*),([^,]*),(.*)//'`
up_votes=`echo $vote_data|sed -r 's/([^,]*),([^,]*),(.*)//'`
down_votes=`echo $vote_data|sed -r 's/([^,]*),([^,]*),(.*)//'`
# echo "$topic , up: $up_votes, down: $down_votes"
total=`awk "BEGIN {print ($up_votes+$down_votes)}"`
if [ $total -eq 0 ];then
ans=divbyzero
else
ans=`awk "BEGIN {print 100.0*$up_votes/( $up_votes+$down_votes)}"`
fi
echo "$topic $ans [ $up_votes / $down_votes ]"
done
输出:
topic1 divbyzero [ 0 / 0 ]
topic2 53.7205 [ 296 / 255 ]
topic3 42.8571 [ 3 / 4 ]