我之前写过一篇日志——shell单引号与变量,其时当时的shell脚本并不能将10以前的数自动加零。当时因为急着改配置文件,所以也没有去改脚本。今天又要重写另外一批配置文件,而刚好时间又有空余,于是就想到把之前的那个问题用另外一个脚本给解决。

例如,我这次要配置的所有的域名是test00.info、test01.info……test99.info,于是下面的脚本就可以直接生成这样的结果了,直接会在小于10的代码前加0

1#/bin/bash
2for i in $(seq 0 99)
3do
4n=$(printf %02d $i)
5echo 'test'${n}'.info'
6done

上面的脚本主要利用了两个工具,一个是seq ,用seq后面加一个首数,后面加一个尾数,seq就会列出其之间的所有数字,并且自动列出为一行一个数字。效果如下:

 1[root@gataway test]# seq 1 10
 21
 32
 43
 54
 65
 76
 87
 98
109
1110

另外用到的一个比较又用的工具就是printf,这个我们在学习C语言的时候用的比较多,而shell中因为有echo,平时我们大多把这个工具给忽略了。而这时就用到它了。具体用法和在C语言中的用法相同,另外也可以通过man手册查看。当然也并不是上面一种方法,其实通过if判断也可以实现的,具体见脚本:

1#!/bin/bash
2for n in $(seq 0 99)
3do
4    if [ $n -lt 10 ] ; then
5       echo test0$n.info
6    else
7       echo test0$n.info
8    fi
9done