Psst: printf "%03d\n" 10полностью используется в bash для получения начального нуля для имен файлов и тому подобного.
Squeezy
@ Squeezy Спасибо, но эта часть уже работала. Фактическая проблема не заключалась в получении имени файла с начальным 0. Он выяснил, какое имя файла имело наибольшее число, а затем создал следующий в последовательности, используя printf "prefix-% 03d.tif" $ SUM.
DeltaLima
8
Обратите внимание, что вы могли бы выяснить это сами, выполнивecho $((016))
Мехрдад
2
К вашему сведению, это верно для многих языков программирования: C, C ++, Javascript.
Пол Дрэйпер
Ответы:
128
Недоразумение в том, что цифры не означают, что вы ожидаете.
Ведущий ноль обозначает число с основанием 8. То 016есть то же самое, что и 8#16. Если вы хотите сохранить ведущий ноль, то вам нужно 10#016.
printf "%03d\n" 10
полностью используется в bash для получения начального нуля для имен файлов и тому подобного.echo $((016))
Ответы:
Недоразумение в том, что цифры не означают, что вы ожидаете.
Ведущий ноль обозначает число с основанием 8. То
016
есть то же самое, что и8#16
. Если вы хотите сохранить ведущий ноль, то вам нужно10#016
.источник
Потому что:
если число начинается с 0, оно считается восьмеричным, а 16 в восьмеричном - 14 в десятичном.
источник