如果变量小于float,则Shell写入文件

如果变量小于float,则Shell写入文件,shell,Shell,我有下面的shell代码 i=0 while read name pren med do i=`expr $i + 1` while read name2 pren2 n1 n2 n3 n4 n5 n6 n7 do if [ $name$pren = $name2$pren2 ] then MED[$i]=`expr $n1 + $n2 + $n3 + $n4 + $n5 + $n6 + $n7` M

我有下面的shell代码

i=0
while read name pren med
do
   i=`expr $i + 1`
   while read name2 pren2 n1 n2 n3 n4 n5 n6 n7
   do
      if [ $name$pren = $name2$pren2 ]
         then
            MED[$i]=`expr $n1 + $n2 + $n3 + $n4 + $n5 + $n6 + $n7`
            MED[$i]=`echo "scale=2;${MED[$i]}/7" | bc -l `
            MED[$i]=`echo "scale=2;($med+${MED[$i]})/2" | bc -l ` 
            PERS[$i]="$name $pren ${MED[$i]}"
            *echo ${PERS[$i]} >> notefinale
      fi    
  done <$2
done <$1
i=0
当读到pren med的名字时
做
i=`expr$i+1`
读取名称时2 pren2 n1 n2 n3 n4 n5 n6 n7
做
如果[$name$pren=$name2$pren2]
然后
MED[$i]=`expr$n1+$n2+$n3+$n4+$n5+$n6+$n7`
MED[$i]=`echo“标度=2;${MED[$i]}/7”| bc-l`
MED[$i]=`echo”标度=2;($MED+${MED[$i]})/2“| bc-l`
PERS[$i]=“$name$pren${MED[$i]}”
*echo${PERS[$i]}>>注释结尾
fi

使用bc完成,将该值乘以10,存储在一个温度变量中,然后将其与85进行比较

如果在使用bc后,值仍然是非整数,则可以使用:

tmpvar=`printf "%0.0f" $float_value`
bash没有内置对比较运算的浮点运算的支持,因此,例如,执行乘法:

med_int=`echo "scale=0; ${MED[$i]} * 10" | bc -l`
# force into an integer
med_int=`printf "%0.0f" $med_int`
if [ $med_int -gt 85 ]; then
    echo ${PERS[$i]} >> notefile
fi