for循环语法结构
第一种for循环语句为变量取值型,语法结构为下:
for 变量名 in 变量取值列表
do
指令
done
第二种for循环语句称为c语言型for循环语句,其语法结构如下:
for((exp1;exp2;exp3))
do
指令
done
第二种用法更规范,更整洁
第一个是变量初始化(i=0),第二个为变量的范围(i<100);第三个为变量自增或者自减;
特别说明:
1)如果希望程序持续运行,则多用while,包括守护进程。
2)如果是有限次循环,则多用for,实际工作中使用for的机会比较多
范例11-2,竖向打印5,4,3,2,1
#!/bin/bash for((i=5;i>0;i--)) do echo$i done
参考答案2:
#!/bin/bash foriin{5..1} do echo$i done
参考答案3:
#!/bin/bash foriin`seq5-11`#seq中的5是起始数字,-1是步长,1是结束数字 do echo$i done
范例11-3:获取当前目录下的目录或者文件名,并将其作为变量列表打印输出
#!/bin/bash foriin`ls/root`#获取根下的root的所有文件 do echo$i done
范例11-4:用for循环批量修改文件扩展名(把txt改成xpg)
#!/bin/bash cd/tmp foriin`ls/tmp` do mv$i`echo$i|cut-d.-f1`.xpg done 或者: #!/bin/bash cd/tmp foriin`ls/tmp` do mv$i`echo$i|sed's/xpg/txt/g'` done 更简单的是: [root@localhosttmp]#pwd /tmp [root@localhosttmp]#rename"xpg""txt". [root@localhosttmp]#ls 19.txt1.txt2.txt3.txt [root@localhosttmp]#rename"txt""xpg"*.txt [root@localhosttmp]#ls 19.xpg1.xpg2.xpg3.xpg [root@localhosttmp]#
计算从1加到100;
#!/bin/bash sum=0 for((i=1;i<101;i++)) do sum=$(($sum+$i)) done echo$sum
范例:11-10 每隔两秒访问一次http://www.baidu.com,一共访问5次
#!/bin/bash whiletrue do curlwww.baidu.com sleep2 done
范例11-11:实现MysqL分库备份的脚本