while 循环语句的问题{n=01while [ $n -lt $HowMany ]do*生成文件 指定目录"$Name"$n.typesleep "$Times"slet n++done}现在的执行结果正常,但是 会出现 序列的问题,也就是 1-9 排列正常,但是10就排列不正常了,排列

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 08:02:13
while循环语句的问题{n=01while[$n-lt$HowMany]do*生成文件指定目录"$Name"$n.typesleep"$Times"sletn++done}现在的执行结果正常,但是会

while 循环语句的问题{n=01while [ $n -lt $HowMany ]do*生成文件 指定目录"$Name"$n.typesleep "$Times"slet n++done}现在的执行结果正常,但是 会出现 序列的问题,也就是 1-9 排列正常,但是10就排列不正常了,排列
while 循环语句的问题
{
n=01
while [ $n -lt $HowMany ]
do
*生成文件 指定目录"$Name"$n.type
sleep "$Times"s
let n++
done
}
现在的执行结果正常,但是 会出现 序列的问题,也就是 1-9 排列正常,但是10就排列不正常了,排列显示的时候 会排在1的下面.
现在我想更改成 0001 0002 0003...序列的样式 [单位为千位]
是不是在 n++后面多添加2个加号?

while 循环语句的问题{n=01while [ $n -lt $HowMany ]do*生成文件 指定目录"$Name"$n.typesleep "$Times"slet n++done}现在的执行结果正常,但是 会出现 序列的问题,也就是 1-9 排列正常,但是10就排列不正常了,排列
shell还没有那么智能,只是一个比较简单的解释程序,一旦当成数值来运算前导零就没了.都是通过指定format的方法来生成相应的文件名.
假定要touch 5000 个.type文件,可以用for循环结合seq命令来实现
#!/bin/bash
for n in $(seq -f "%04g" 1 5000) ; do
touch $n.type
sleep 1
done
上面的seq命令会生成从0001,0002到5000的数字,最终得到0001.type, 0002.type, ... ,5000.type
如果想把1转换为0001,也可以使用printf
printf "%04d" 1
会输出0001