while 循环语句和循环嵌套
重复测试指令的条件,只要条件成立就反复执行对应的命令操作,直到命令不成立或为假;
语法格式:
while 测试命令
do
命令
done
注意:避免陷入死循环 while true
例1:降序输出10到1的数字
[root@xuegod63 ~]# cat while-1.sh
#!/bin/bash var=10 while [ $var -gt 0 ] do echo $var var=$[$var-1] done
例2:输出如下图两数相乘的效果
自增操作 let var++
自减操作 let var--
[root@xuegod63 ~]# cat while-2.sh
#!/bin/bash num=1 while [ $num -lt 10 ] do sum=$(( $num * $num )) echo "$num * $num = $sum" ((num++)) # let num++ done
嵌套循环
例1:批量添加a.txt文件5个用户
[root@xuegod63 ~]# vim a.txt #添加5个用户
mk cd ls find ln
编写脚本的思路
1 明确脚本的功能
2 编写脚本时会使用到那些命令 ? useradd passwd for
3 把变化的数据使用变量表示
4 选择适合的流程控制 (选择 、 循环 、分支)
[root@xuegod63 ~]# cat for-adduser.sh
#!/bin/bash for name in `cat /root/a.txt` #for name in $(cat /root/a.txt) do id $name &> /dev/null if [ $? -ne 0 ];then useradd $name echo "123456" |passwd --stdin $name &> /dev/null echo "user $name created" else echo "user $name is exist" fi done 注:&> 是正确和错误的信息都重定向到/dev/null里面
例2 :打印九九乘法表
注:外层循环循环行,内层循环循环列
规律: 内层循环的变量<=外层循环的变量
[root@xuegod63 ~]# cat for-for.sh
for i in `seq 9` do for j in `seq $i` do echo -n "$i*$j= `echo $(($i*$j))` " done echo " " done