Было дело "пописывал" на ассемблере различные драйвера для тогда еще только появившихся 8088/80286 процессоров...аккурат у "истоков" Windows 3.11,95 и первых загружаемых прямо из DOS (отдельным разделом-файлом) "линей"..типа вот этого "Оттуда" и ник...
Сдаётся мне, дело не в скрипте. Вот краеугольная функция (можно в консоли испытать): printf "%02d:%02d:%06.3f\n" 30 30 30
А как изменить разделитель разрядов хз. Т.е. формат f - это число с плавающей точкой, но сама оболочка делает разделитель разрядов запятой. Можно, кстати, вообще оставить только %f, без 06.3.
Решение было подсказано там, где обитают подлинные скриптовые гуру :) На forum.ru-board.com. Т.е. достаточно в начале скрипта вставить LC_NUMERIC=C и усё будэ в ёлочку.
Было дело "пописывал" на ассемблере различные драйвера для тогда еще только появившихся 8088/80286 процессоров...аккурат у "истоков" Windows 3.11,95 и первых загружаемых прямо из DOS (отдельным разделом-файлом) "линей"..типа вот этого "Оттуда" и ник...
Сдаётся мне, дело не в скрипте. Вот краеугольная функция (можно в консоли испытать):
printf "%02d:%02d:%06.3f\n" 30 30 30
А как изменить разделитель разрядов хз. Т.е. формат f - это число с плавающей точкой, но сама оболочка делает разделитель разрядов запятой. Можно, кстати, вообще оставить только %f, без 06.3.
Ну я тоже подумал, что дело в строке оператора "print". Но вот как и что...
Можно например так...
printf "%02d:%02d:%06.9f\n" 30 30 30 | sed 's/\,/./g'
Блин..SED ...читаешь мысли.. а как это в скрипт "вкрутить"? Ладно, пробую...
Отлично, все работает... SED как всегда "на высоте".. Спасибо! :)
Вот отличное решение:
$ LC_NUMERIC=C
$ printf "%02d:%02d:%06.3f\n" 30 30 300
$ 30:30:300.000
Решение было подсказано там, где обитают подлинные скриптовые гуру :) На forum.ru-board.com. Т.е. достаточно в начале скрипта вставить LC_NUMERIC=C и усё будэ в ёлочку.
Отправить комментарий