目录
在shell 中循环有以下几种:
for 循环 |
while 循环 |
until 循环 |
select 循环 |
break 和 continue |
for循环
在shell中,for循环有两种情况
带列表循环 |
不带列表循环 |
带列表循环
语法:
for 循环变量 in 列表
do
执行语句
...
done
在语法中,循环变量是每次循环时得到的列表的某一数据,当循环一次结束后,再获取另一个数,然后再执行 do 里面的语句,依此类推,直到列表中数据循环完结
for 循环中的列表中的数据是以空格来进行分隔的
示例:
直到列出列表的所有元素
代码示例:
[root@openEuler ~]# cat for1.sh
#!/bin/bash
for var in 192.168.72.130 192.168.72.131 192.168.72.132
do
echo $var
done
[root@openEuler ~]# bash for1.sh
192.168.72.130
192.168.72.131
192.168.72.132
还可以修改如下:
[root@openEuler ~]# cat for1.sh
#!/bin/bash
for var in 192.168.72.13{0..3}
do
echo $var
done
[root@openEuler ~]# bash for1.sh
192.168.72.130
192.168.72.131
192.168.72.132
192.168.72.133
还可以使用 seq 命令来生成列表数据:
[root@openEuler ~]# cat for1.sh
#!/bin/bash
for var in $(seq -f "192.168.72.13%1g" 1 5)
do
echo $var
done
[root@openEuler ~]# bash for1.sh
192.168.72.131
192.168.72.132
192.168.72.133
192.168.72.134
192.168.72.135
在带列表的 for 循环中,还可以指定循环的步长
语法:
for 循环变量 in {开始..结束..步长}
do
语句
....
done
示例:
循环输入1~10中的奇数
[root@openEuler ~]# cat for2.sh
#!/bin/bash
for v in {1..10..2}
do
echo $v
done
[root@openEuler ~]# bash for2.sh
1
3
5
7
9
示例:
获取根目录下所有文件名作为变量的值打印输出
代码示例:
[root@openEuler ~]# cat for3.sh
#!/bin/bash
for file in $(ls -F / | grep -v /$)
do
echo $file
done
[root@openEuler ~]# bash for3.sh
bin@
lib@
lib64@
sbin@
示例:
打印出如下的语句中字符数不大于6的单词
hello world rabbit favorite eat apple cabbage
代码示例:
[root@openEuler ~]# cat for4.sh
#!/bin/bash
for word in hello world rabbit favorite eat apple cabbage
do
if [ `expr length ${word}` -le 6 ]; then
echo $word
fi
done
[root@openEuler ~]# bash for4.sh
hello
world
rabbit
eat
apple
不带列表循环
语法: