Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Feb 2016 20:53:24 -0700
From:      Sergey Manucharian <sm@ara-ler.com>
To:        Ernie Luzar <luzar722@gmail.com>
Cc:        Freebsd Questions <FreeBSD-questions@freebsd.org>
Subject:   Re: sh script help with numeric values
Message-ID:  <20160203035324.GH1828@dendrobates.araler.com>
In-Reply-To: <56B1765D.2060800@gmail.com>
References:  <56B1765D.2060800@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hello Ernie,

Excerpts from Ernie Luzar's message from Wed 03-Feb-16 11:39:
> Hello list
> 
> I am having trouble getting leading zeros to show up.
> The following is an example of what i mean.
> 
>    dirname="dir"
>    dup_count=000
>    dup_times=5
> 
>    while [ "${dup_count}" -ne "${dup_times}" ]; do
>        dup_count=$(( $dup_count + 001 ))
>        dname="${dirname}-${dup_count}"
>        echo "${dname}"
>    done
> 
> Outputs this
> dir-1
> dir-2
> dir-3
> dir-4
> dir-5
> 
> What I really want to see is this
> dir-001
> dir-002
> dir-003
> dir-004
> dir-005
> dir-013
> dir-111
> ect
> 
> How do I get the leading zeros to show?

This is an arithmetic expression:
  dup_count=$(( $dup_count + 001 ))

which gives calculate a number, you don't need to use leading zeros.
Use "printf" instead of "echo" to output the result.

Example:
 $ A=3
 $ printf "%03d\n" $A
 $ 003

--
Sergey




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20160203035324.GH1828>