簡體   English   中英

使用 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/([^,]*),([^,]*),(.*)/\1/'`
    up_votes=`echo $vote_data|sed -r 's/([^,]*),([^,]*),(.*)/\2/'`
    down_votes=`echo $vote_data|sed -r 's/([^,]*),([^,]*),(.*)/\3/'`

#    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 ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM