整型变量的前导补零

4rb*_*b3l 4 scripting shell-script

我正在尝试创建一个新变量,其中 0 到 9 之间的数字应始终表示为 00...09 而不是 0...9。这是我的测试,没有用于 POC 目的的实际命令:

for i in {00..23}; do hourPlus=$((i+1)); echo $i $hourPlus; done
Run Code Online (Sandbox Code Playgroud)

哪个输出:

00   1
01   2
02   3
03   4
04   5
05   6
06   7
07   8
08   9
09   10
10   11
11   12
12   13
13   14
14   15
15   16
16   17
17   18
18   19
19   20
20   21
21   22
22   23
23   24
Run Code Online (Sandbox Code Playgroud)

然而,我期待类似的事情:

00   01
01   02
02   03
03   04
04   05
05   06
06   07
07   08
08   09
09   10
10   11
11   12
12   13
13   14
14   15
15   16
16   17
17   18
18   19
19   20
20   21
21   22
22   23
23   24
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何让它按照我的预期为我的 for 循环正常工作?

Lin*_*eak 8

这是一个适合您的功能:

two_digits_zero_fill ()
{
    # print the number as a string with a leading zero
    printf '%02d\n' "$1"
}
Run Code Online (Sandbox Code Playgroud)

甚至更普遍:

leading_zero_fill ()
{
    # print the number as a string with a given number of leading zeros
    printf "%0$1d\\n" "$2"
}
Run Code Online (Sandbox Code Playgroud)

后者的用法:

number=7
leading_zero_fill 3 "$number"
Run Code Online (Sandbox Code Playgroud)

将打印出:

007
Run Code Online (Sandbox Code Playgroud)