for循环语法
工作中总是有很多工作需要重复性来完成,比如每天都需要执行一次备份、每天都需要分析一次业务的access.log日志,每分钟都需要监测一次主机的状态等等工作,这些重复性的工作我们一般都是使用脚本来完成,对于不需要频繁执行的任务,可以结合计划任务➕脚本完成,但是系统的计划任务只能精确到分,不能满足更频繁的重复工作。
这个时候我们除了依赖计划任务之外还有很多选择,比如脚本中的循环语句。
循环的优点
- 节省内存 10M脚本 1M脚本 哪个更剩内存 完成同一个任务
- 结构更清晰
- 节省开发时间成本
一、for语法
1、语法一
每赋一次值,执行一次代码
for variable_name in {list}
do
command
command
…
done
或者
for variable in a b c
do
command
command
done
例如:循环输出1-10
预备知识:
[root@CentOs shell]# vim ShellTest.sh
[root@CentOs shell]# seq 1 10
1
2
3
4
5
6
7
8
9
10
[root@CentOs shell]# seq 10 -1 1
10
9
8
7
6
5
4
3
2
1
[root@CentOs shell]#
[root@CentOs shell]# bash ShellTest.sh
1
2
3
4
5
6
7
8
9
10
[root@CentOs shell]#
二、语法二:C式的for命令
for(( expr1;expr2;expr3 ))
do
command
command
…
done
for (( i=1;i<=5;i++))
do
echo $i
done
expr1:定义变量并赋初值 变量初始值
expr2:决定是否进行循环(条件) 变量的条件
expr3:决定循环变量如何改变,决定循环什么时候退出 自增或自减运算
多变量用法
for ((A=1,B=10;A<10,B>1;A++,B--))
例如:
[root@CentOs shell]# bash ShellTest.sh
1
2
3
4
5
6
7
8
9
10
再比如,写一个无限循环的
sleep 1 每秒输出一次
附:
for赋值的几种方式:
(1)直接赋值
for var 1 2 3 4 5 6
(2)使用命令赋值
for var in `seq 1 9`
(3)赋值可以是一个字符串,输出就是一个一个单词输出了
for var in he is cool
do
echo "word:$var"
done
[root@CentOs shell]# bash ShellTest.sh
word: he
word: is
word: cool
[root@CentOs shell]#