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