我之前写过一篇日志——shell单引号与变量,其时当时的shell脚本并不能将10以前的数自动加零。当时因为急着改配置文件,所以也没有去改脚本。今天又要重写另外一批配置文件,而刚好时间又有空余,于是就想到把之前的那个问题用另外一个脚本给解决。
例如,我这次要配置的所有的域名是test00.info、test01.info……test99.info,于是下面的脚本就可以直接生成这样的结果了,直接会在小于10的代码前加0
#/bin/bash
for i in $(seq 0 99)
do
n=$(printf %02d $i)
echo 'test'${n}'.info'
done
上面的脚本主要利用了两个工具,一个是seq ,用seq后面加一个首数,后面加一个尾数,seq就会列出其之间的所有数字,并且自动列出为一行一个数字。效果如下:
[root@gataway test]# seq 1 10
1
2
3
4
5
6
7
8
9
10
另外用到的一个比较又用的工具就是printf,这个我们在学习C语言的时候用的比较多,而shell中因为有echo,平时我们大多把这个工具给忽略了。而这时就用到它了。具体用法和在C语言中的用法相同,另外也可以通过man手册查看。当然也并不是上面一种方法,其实通过if判断也可以实现的,具体见脚本:#!/bin/bash
for n in $(seq 0 99)
do
if [ $n -lt 10 ] ; then
echo test0$n.info
else
echo test0$n.info
fi
done