Differences between revisions 1 and 10 (spanning 9 versions)
Revision 1 as of 2007-05-02 23:04:00
Size: 1899
Editor: redondos
Comment:
Revision 10 as of 2008-11-08 07:37:31
Size: 266
Editor: c-98-213-31-226
Comment: Hello. It is glad to a meeting! recipe for bran muffins without sugar Hope it will always be alive! http://silver6.9ix.net/recipe329.html clamcake recipe work, http://base27mine-pd.tripod.com/recipe41
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[[Anchor(faq18)]]
== How can I use numbers with leading zeros in a loop, e.g. 01, 02? ==
As always, there are different ways to solve the problem, each with its own advantages and disadvantages.

If there are not many numbers, BraceExpansion can be used:
{{{
    for i in 0{1,2,3,4,5,6,7,8,9} 10
    do
        echo $i
    done
}}}

Output:
{{{
00
01
02
03
[...]
}}}

This gets tedious for large sequences, but there are other ways, too. If the command {{{seq}}} is available, you can use it as follows:
{{{
    seq -w 1 10
}}}

or, for arbitrary numbers of leading zeros (here: 3):

{{{
    seq -f "%03g" 1 10
}}}

If you have the {{{printf}}} command (which is a Bash builtin, and is also POSIX standard), it can be used to format a number, too:

{{{
    for ((i=1; i<=10; i++))
    do
        printf "%02d " "$i"
    done
}}}

The KornShell and KornShell93 have the {{{typeset}}} command to specify the number of leading zeros:

{{{
    $ typeset -Z3 i=4
    $ echo $i
    004
}}}

Finally, the following example works with any BourneShell derived shell to zero-pad each line to three bytes:

{{{
i=0
while test $i -le 10
do
    echo "00$i"
    i=`expr $i + 1`
done |
    sed 's/.*\(...\)$/\1/g'
}}}

In this example, the number of '.' inside the parentheses in the {{{sed}}} statement determins how many total bytes from the {{{echo}}} command (at the end of each line) will be kept and printed.

One more addendum: in Bash 3, you can use:
{{{
printf "%03d \n" {1..300}
}}}

Which is slightly easier in some cases.

Also you can use the {{{printf}}} command with xargs and wget to fetch files:

{{{
printf "%03d \n" {$START..$END} | xargs -i% wget $LOCATION/%
}}}

Sometimes a good solution.

I found that on bash 2 you can nest seq in back ticks and this will work as well.

{{{
printf "%03d \n" `seq 300`
}}}
Hello. It is glad to a meeting! recipe for bran muffins without sugar Hope it will always be alive! http://silver6.9ix.net/recipe329.html clamcake recipe work, http://base27mine-pd.tripod.com/recipe41.html london broil recipe baked, Great.
----
CategoryHomepage

Hello. It is glad to a meeting! recipe for bran muffins without sugar Hope it will always be alive! http://silver6.9ix.net/recipe329.html clamcake recipe work, http://base27mine-pd.tripod.com/recipe41.html london broil recipe baked, Great.


CategoryHomepage

BashFAQ/018 (last edited 2019-08-21 16:24:29 by GreyCat)