for循环
for ## 定义变量
do ## 使用变量,执行动作
done ## 结束标志
1、列表循环
(1)
#!/bin/bash
for n in `seq 2 2 10`
do
echo $n
done
(3)
for n in 1 2 3
do
echo $n
done
(3)
for n in {10..1..2} ##从10到1步长为2
do
echo $n
done
2、不带列表循环
for var
do
echo $var
done
echo "脚本后面有$#个参数"
3、类C语言循环
for ((WESTOS=0;WESTOS<10;WESTOS++)) ##i+=2
do
echo $WESTOS
done
4、跳出循环
循环体: do…done之间的内容
continue:继续;表示循环体内下面的代码不执行,重新开始下一次循环
break:打断;马上停止执行本次循环,执行循环体外的代码
exit:表示直接跳出程序
练习 1
计算1-100奇数和
for num in ‘1..100..2’
sum=0
do
let sum=$sum+$num ##let以数值的方式进行相加
done
echo $sum
练习 2.
判断所输整数是否为质数
num=$*
if [ $num=2 ];then
echo “是质数”
elif [ $num=3 ];then
echo “是质数”
else
for i in {2..num-1}
do
if [ $num%$i=0 ];then
echo “不是质数”
exit
fi
done
fi
echo "$number是质数" && exit
练习 3.
批量创建用户
需求:批量加5个新用户,以u1到u5命名,并统一加一个新组,组名为class,统一改密码为123,
要求这几个用户的家目录都在/rhome
思路
● 添加用户的命令
● 判断class组是否存在
● 根据题意,判断该脚本循环5次来添加用户
● 给用户设置密码,应该放到循环体里面
#!/bin/bash
echo '1. Create Group'
grep -w class /etc/group &>/dev/null
if [ $? -eq 0 ];then
echo “group [class] has exist”
else
groupadd class
[ $? -eq 0 ]&& echo “group [class] creat ok” || echo “group [class] creat filed”
fi
echo '2. Create User'
for count in {1..5}
do
username=”u$count”
id $username &> /dev/null
if [ $? -eq 0];then
echo “user $username exist”
else
useradd -G class $username
usermod -d /rhome $username
echo $username
echo 123 | passwd --stdin $username
done
练习 4.
检测10台与您当前主机直连主机是否网络通常,通则显示主机的ip列表
#!/bin/bash
for i in {1..10}
do
if ping -c1 192.168.43.$i &> /dev/null then
echo 192.168.43.$I is connection
sed -i "/192.168.43.$1" /mnt/list
else
echo 192.168.43.$I is timeout
fi
done
echo "*********ping通ip列表********"
cat /mnt/list