Psst: printf "%03d\n" 10é completamente utilizável no bash para obter um zero inicial para nomes de arquivos e outros.
Squeezy
@ Squeezy Obrigado, mas essa parte já estava funcionando. O problema real não era obter um nome de arquivo com um 0. inicial. Ele estava descobrindo qual era o número de arquivo com o número mais alto e, em seguida, criando a próxima sequência, usando printf "prefix-% 03d.tif" $ SUM.
DeltaLima 08/01
8
Observe que você mesmo poderia ter descoberto isso fazendo #echo $((016))
Mehrdad
2
Para sua informação, isso é verdade em muitas linguagens de programação: C, C ++, Javascript.
Paul Draper
Respostas:
128
O mal-entendido é que os números não significam o que você espera.
Um zero à esquerda indica um número com a base 8. Ou seja, 016é o mesmo que 8#16. Se você deseja manter o zero à esquerda, precisa 10#016.
printf "%03d\n" 10
é completamente utilizável no bash para obter um zero inicial para nomes de arquivos e outros.echo $((016))
Respostas:
O mal-entendido é que os números não significam o que você espera.
Um zero à esquerda indica um número com a base 8. Ou seja,
016
é o mesmo que8#16
. Se você deseja manter o zero à esquerda, precisa10#016
.fonte
Porque:
se o número começa com 0, é considerado um valor octal e 16 em octal é 14 em decimal.
fonte