桁合わせした数字の出力。

最近テスト用のシェルスクリプトを書く機会が多く、ホスト名の生成等で数字の桁合わせをしなければならなかったので、方法を調べてみました。

Linuxで桁合わせをした数字を出力する方法

seqを使う。
  • 今まで知らなかったのですが、seqというコマンドがありました。これは特定範囲の数字を生成するコマンドとのことです。
$ seq 5 10
5
6
7
8
9
10
  • "-w" オプションを使うと、桁合わせができます。
$ seq -w 5 10
05
06
07
08
09
10
  • forを使って文字列と組み合わせ
for i in `seq -w 5 10`
do
    echo "hogehost$i"
done
  • こんな感じで出力されます。
hogehost05
hogehost06
hogehost07
hogehost08
hogehost09
hogehost10
printfを使う。
  • 先ほどまで上記の方法を知らなかったので、whileとprintfを使って桁合わせをしていました。
HOSTNAME=()
i=0
while [ $i -ne 10 ]
do
    i=`expr $i + 1`
    HOSTNAME[$i]="hogehost`printf %02d $i`"
    echo ${HOSTNAME[$i]}
done
  • printfを使った方がプログラマっぽい書き方でしょうか。出力するとこうなります。
hogehost01
hogehost02
hogehost03
hogehost04
hogehost05
hogehost06
hogehost07
hogehost08
hogehost09
hogehost10