语法格式
- 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
在带列表的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的单词。
- [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
语法格式:
- for 循环变量
- do
- 语句
- ...
- done
示例:循环输入所有的参数
- [root@openEuler ~]# cat for5.sh
- #!/bin/bash
-
- for v in $@
- do
- echo $v
- done
- [root@openEuler ~]# bash for5.sh
- [root@openEuler ~]# bash for5.sh {1..5}
- 1
- 2
- 3
- 4
- 5
语法格式:
- for ((表达式1;表达式2;表达式3))
- do
- 语句
- done
示例:批量创建用户,用户名以 test 开头,按数字序号变化。一共添加 30 个账号,名称如:test01、test02、...、test10、....test30 用户初始密码为 Abc123456
- [root@openEuler ~]# cat for6.sh
- #!/bin/bash
-
- for ((i=1;i<=30;i++))
- do
- if [ $i -lt 10 ]; then
- user=test0$i
- else
- user=test$i
- fi
- if ! id -u $user &> /dev/null
- then
- useradd $user
- echo "Abc123456" | passwd --stdin $user &> /dev/null
- else
- echo "$user is exists"
- fi
- done
-
- [root@openEuler ~]# bash for6.sh
- [root@openEuler ~]# grep test /etc/passwd
- test01:x:1001:1001::/home/test01:/bin/bash
- test02:x:1002:1002::/home/test02:/bin/bash
- test03:x:1003:1003::/home/test03:/bin/bash
- test04:x:1004:1004::/home/test04:/bin/bash