Solution:
Préfixez le premier numéro avec un 0
pour forcer chaque terme à avoir la même largeur.
$ echo {08..10}
08 09 10
Dans la section de la page de manuel de bash sur l’extension Brace :
Les entiers fournis peuvent être préfixés par 0 pour forcer chaque terme à avoir la même largeur. Lorsque x ou y commence par un zéro, le shell tente de forcer tous les termes générés à contenir le même nombre de chiffres, en ajoutant des zéros si nécessaire.
Notez également que vous pouvez utiliser seq
avec le -w
option pour égaliser la largeur en remplissant avec des zéros non significatifs :
$ seq -w 8 10
08
09
10
$ seq -s " " -w 8 10
08 09 10
Si vous voulez plus de contrôle, vous pouvez même spécifier un format de style printf :
$ seq -s " " -f %02g 8 10
08 09 10
si vous utilisez printf
printf "%.2d " {8..10}
cela forcera à être 2 caractères et ajoutera un 0 en tête. Si vous avez besoin de 3 chiffres, vous pouvez changer en “%.3d “.
J’ai la même version bash de l’affiche originale (GNU bash, version 3.2.51(1)-release
) et {08..12}
ne fonctionne pas pour moi, mais ce qui suit fonctionne :
for i in 0{8..9} {10..12}; do echo $i; done
08
09
10
11
12
C’est un peu plus fastidieux, mais cela fonctionne sur la version OP de bash (et les versions ultérieures, je suppose).