私は次のコードを書いた。
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
望みます。$fre
else
現時点では、どちらの場合もHTMLページに緑色があります。
ベストアンサー1
Bashは浮動小数点比較を実行できません。別のツールを呼び出す必要があります。ここでは、bc
bashから入力を読むことを示しています。ここにある文字列。
複数回呼び出すのではなく、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