[Comm] Арифметика в bash

Vladimir Karpinsky vkarpinsky на mail.ru
Чт Ноя 17 19:06:35 MSK 2011


17.11.2011 19:50, Sergey Vlasov пишет:
> On Thu, Nov 17, 2011 at 11:51:09AM +0400, Vladimir Karpinsky wrote:
>> Уже некоторое время пытаюсь найти простое решение следующей
>> проблемы: нужно производить простейшие арифметические операции (как
>> правило + или -1 ;-)) с "юлианскими" днями года (date +%j).
>> Сложность заключается в том, что формат такой даты JJJ, т.е. первые
>> 99 дней года первая цифра 0, и bash считает это число восьмеричным,
>> со всеми вытекающими последствиями. Хочется заставить bash работать
>> с такими числами, как десятеричными, формат JJJ для результата
>> вычисления желательно также сохранить.
>
> Именно в bash поддерживается синтаксис вида BASE#NUMBER с явным
> указаним основания:
>
>    $ bash -c 'a=011; echo $((10#$a))'
>    11
>
> Нужно учитывать, что в POSIX sh такой синтаксис не поддерживается,
> поэтому в скриптах нужно явно указывать #!/bin/bash (использование
> #!/bin/sh в ALT пока не проявится в виде ошибок, но в некоторых
> дистрибутивах в роли /bin/sh может оказаться, например, dash).
>
> Выводить числа в нужном формате можно через printf '%03d' $n .

Спасибо! Где-то я похоже не там искал. Я, ведь, даже пытался 
форматированный вывод искать...

-- 
	С уважением,
		Владимир.


Подробная информация о списке рассылки community