使用for循环语句时,需要指定一个变量以及可能的取值列表,根据不同的取值,执行相同的命令序列知道变量的值取完退出循环,取值列表称为for语句的执行条件
for 变量 in 值1 值2 值3… do 命令 done
在这种语法中,for 循环的次数取决于 in 后面值的个数(以空格分隔),有几个值就循环几次,并且每次循环都把值赋予变量。也就是说,假设 in 后面有三个值,for 会循环三次,第一次循环会把值 1 赋予变量,第二次循环会把值 2 赋予变量,以此类推。
[root@yaoguang shell]# vim /root/shell/num #新建一个取值列表 1 2 3 4 5 6 [root@yaoguang shell]# vim for.sh #编辑shell脚本 #!/bin/bash NUM=$(cat /root/shell/num) for i in $NUM do echo $i done [root@yaoguang shell]# sh for.sh #执行脚本 1 2 3 4 5 6
要求:
1.根据姓名列表批量创建用户;
2.用户的初始密码是“123456”
实施步骤:
#创建取值列表 [root@yaoguang shell]# vim username zhangsan lisi wangwu zhaoliu #创建批量创建用户的脚本 [root@yaoguang shell]# vim for01.sh #!/bin/bash #for语句实例2 USER=$(cat /root/shell/username) for i in $USER do useradd $i echo "123456" | passwd --stdin $i &> /dev/null done #运行脚本 [root@yaoguang shell]# sh for01.sh #验证效果 [root@yaoguang shell]# tail -4 /etc/passwd zhangsan:x:1000:1000::/home/zhangsan:/bin/bash lisi:x:1001:1001::/home/lisi:/bin/bash wangwu:x:1002:1002::/home/wangwu:/bin/bash zhaoliu:x:1003:1003::/home/zhaoliu:/bin/bash
for ((初始值;循环控制条件;变量变化)) do 程序 done
在语法二中需要注意以下几点:
语法二和其他语言中的 for 循环类似,也就是事先决定循环次数的固定循环。
#!/bin/bash #从 1 加到100 s=0 for(( i=1;i<=100;i=i+1)) #定义循环100次 do s=$(($s+$i)) #每次循环给变量s赋值 done echo "The sum of 1+2+..+100 is : $s" #输出从1加到100的和