文字列を浮動小数点値と比較

文字列を浮動小数点値と比較

私は次のコードを書いた。

for j in `cat output_10.txt`

do

dri=`echo $j |cut -d':' -f1` 
nu=`echo $j |cut -d':' -f2`
tot=`echo $j |cut -d':' -f3`
fre=`echo $j |cut -d':' -f4`


if [ $fre > 2 ]
                then
                echo "<td align="Center" bgcolor="#81F781"> $fre </td>" >>mailbody.html
                else
                echo "<td align="Center" bgcolor="#B40404"> $fre </td>" >>mailbody.html
fi
done 

freの値は、9.8と同様にoutput_10.txtファイルから読み取られます。問題は、 のelse値が 2 より小さくても条件が成立しないという点である。値が2未満の場合、条件は有効でHTMLページに赤で表示されることを$fre望みます。$freelse

現時点では、どちらの場合もHTMLページに緑色があります。

ベストアンサー1

Bashは浮動小数点比較を実行できません。別のツールを呼び出す必要があります。ここでは、bcbashから入力を読むことを示しています。ここにある文字列

複数回呼び出すのではなく、readファイル行からフィールドを抽出するには、このコマンドを使用します。cut

二重引用符をエスケープせずに二重引用符で囲まれた文字列に含めることはできません。printf参照をより簡単にするために使用されます。

#!/bin/bash
while IFS=: read dri nu tot fre rest_of_line; do
    if [[ $(bc <<< "$fre > 2") == "1" ]]; then
        color=81F781
    else
        color=B40404
    fi
    printf '<td align="Center" bgcolor="#%s">%s</td>' $color $fre >>mailbody.html
done <  output_10.txt

おすすめ記事