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 循环正常工作?
这是一个适合您的功能:
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)
将打印出:
Run Code Online (Sandbox Code Playgroud)007