Учитывая размер файла в байтах, я хочу отформатировать его с префиксами IEC (двоичными) до 3 значащих цифр с конечными нулями, например, 1883954 становится 1,80M.
Арифметика с плавающей точкой не поддерживается в bash, поэтому вместо нее я использовал awk. Проблема в том, что я не умею держать конечные нули. Текущее решение:
if [ $size -ge 1048576 ]
then
size=$(awk 'BEGIN {printf "%.3g",'$size'/1048576}')M
elif [ $size -ge 1024 ]
then
size=$(awk 'BEGIN {printf "%.3g",'$size'/1024}')K
fi
(Файлы не такие большие, поэтому мне не нужно рассматривать большие единицы.)
Изменение: Есть еще одна проблема с этим. См. Комментарий Адриана Фрювирта ниже.