8進数

8進数

0 から 9 までの数字が常に 0...9 ではなく 00...09 で表示される新しい変数を作成しようとしています。以下は、POC目的で実際のコマンドを使用していないテストです。

for i in {00..23}; do hourPlus=$((i+1)); echo $i $hourPlus; done

任意の出力:

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

しかし、私が期待するものは次のとおりです。

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

私のforループで期待どおりに動作させる方法を知っている人はいますか?

ベストアンサー1

以下はあなたのための機能です:

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

より一般的なケースは次のとおりです。

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

後者の使用法:

number=7
leading_zero_fill 3 "$number"

以下を印刷します。

007

おすすめ記事