语法
多行写法
while 条件
do
命令1
命令2
……
continue; #结束本次循环,进入下一次循环
break; #结束当前循环
done
read -p "please inout a number: " num
i=0
while [ $i -lt $num ]
do
echo "hello world"
let i++
done
单层while循环九九乘法表
while循环读取文件
exec < file 将文件读取内容当作标准输入
while read 变量名
也可以
cat file | while read 变量名
直接读取
while read line
do
done < file ##直接将文件重定向到while
break和continue
break:终止循环(终止它所在的循环)
continue:继续
在循环中暂停的继续不是一个位置
暂停当前这次循环,继续下一次循环开始
从continue跳出本次循环,执行下一次循环
i=1
while [ $i -le 10 ]
do
if [ $i -eq 5 ]
then
let i++
continue
fi
echo "$i"
let i++
done
~
exit : 退出程序
练习
1、获取当前哪些主机在线
for i in 192.168.31.{100..254}
do
ping -c 1 -w 1 $i &> /dev/null #将ping命令输出重定向到回收站
result=$?
if [ $result -eq 0 ] #ping成功返回码为0符合要求输出
then
echo "$i is online"
else
echo "$i is notonline"
fi
done
2、批量创建用户
for i in {1..30}
do
username=`printf "test%02d" $i`
if ! id -u $username &> /dev/null
then
useradd $username
echo "123456" | passwd --stdin $username &> /dev/null
echo "Add user $username successfuly"
else
echo "User $username already exists"
fi
done
~