92 votes

Remplissage de zéros dans une chaîne de caractères

J'écris un script bash script pour obtenir des podcasts. Le problème est que certains numéros de podcasts sont à un chiffre alors que d'autres sont à deux/trois chiffres, je dois donc les remplir pour qu'ils soient tous à trois chiffres.

J'ai essayé ce qui suit :

n=1

n = printf %03d $n

wget http://aolradio.podcast.aol.com/sn/SN-$n.mp3

mais la variable 'n' ne reste pas remplie en permanence. Comment puis-je la rendre permanente ?

3voto

Rob Wells Points 21714

Comme indiqué par noselad, la substitution de commande, c'est-à-dire $(...), est préférable car elle remplace les commandes rétroactives, c'est-à-dire `...` .

Beaucoup plus facile à utiliser lorsqu'on essaie d'imbriquer plusieurs substitutions de commandes au lieu de les escamoter, par exemple "backslashing", backtics.

0voto

Siva Points 21

Ceci est une réponse à une réponse donnée par cC Xx. Il ne fonctionnera que jusqu'à a est inférieure à 5 chiffres.

Considérer le moment où a=12345678 . Les premiers chiffres seront tronqués :

a="12345678" 
b="00000${a}" 
c="${b: -5}" 
echo "$a, $b, $c"

Cela donne le résultat suivant :

12345678, 0000012345678, 45678

Mise en place d'un if pour vérifier la valeur de a est inférieur à 5 chiffres et le faire pourrait être une solution :

if [[ $a -lt 9999 ]] ; then b="00000${a}" ; c="${b: -5}" ;  else c=$a; fi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X