sh script help with numeric values

Sergey Manucharian sm at ara-ler.com
Wed Feb 3 03:53:28 UTC 2016


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



More information about the freebsd-questions mailing list