Padding zeros in a string


Question

I'm writing a bash script to get some podcasts. The problem is that some of the podcast numbers are one digits while others are two/three digits, therefore I need to pad them to make them all 3 digits.

I tried the following:

n=1

n = printf %03d $n

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

but the variable 'n' doesn't stay padded permanently. How can I make it permanent?

1
61
7/12/2009 10:51:37 PM

Accepted Answer

Use backticks to assign the result of the printf command (``):

n=1
wget http://aolradio.podcast.aol.com/sn/SN-`printf %03d $n`.mp3

EDIT: Note that i removed one line which was not really necessary. If you want to assign the output of 'printf %...' to n, you could use

n=`printf %03d $n`

and after that, use the $n variable substitution you used before.

79
7/12/2009 10:55:15 PM

Seems you're assigning the return value of the printf command (which is its exit code), you want to assign the output of printf.

bash-3.2$ n=1
bash-3.2$ n=$(printf %03d $n)
bash-3.2$ echo $n
001

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon