С %.0s (точнее, с %.0d), кстати, в своё время наелся в Linux - его реализация форматтера в этом месте не соответствует POSIX. Надо багу засабмитить, штоле, гм.
0 должен печататься как пустая строка. Я даже в man 3 printf находил:
d, i The int argument is converted to signed decimal notation. The precision, if any, gives the minimum number of digits that must appear; if the converted value requires fewer digits, it is padded on the left with zeros. The default precision is 1. When 0 is printed with an explicit precision 0, the output is empty.
Comments 6
Reply
Сначала авторы считают "ну здесь никому не придёт использовать 0". Или "пусть 0 в конфиге - это бесконечность"
Потом используют $N вместо константы, потом в $N приходит 0.
А что не соответствовало? И во FreeBSD, и в Ubuntu печается "12" на printf "%.0d" 12
Reply
d, i The int argument is converted to signed decimal notation. The precision, if any, gives
the minimum number of digits that must appear; if the converted value requires fewer
digits, it is padded on the left with zeros. The default precision is 1. When 0 is
printed with an explicit precision 0, the output is empty.
А хуйц, в glibc работает, а в Linux - нет.
Reply
Reply
Вот теперь я понимаю коллег.
Reply
В питоне единственный необычный (необычный для питона, но обычный в JavaScript) прием - это замена
a = 10
do_something(a)
на
(lambda a: do_something(a))(10).
В bash - таки использую printf для повторения файла в шаблоне, и рассказываю об этом для коллег, как это здорово.
printf " --file " *.dat
Reply
Leave a comment