循环语句
文章目录
for循环语句
for语句结构
读取不同的变量值,用来逐个执行同一组命令
语句结构
for 变量名 in 取值列表
do
命令序列
done
批量添加用户
用户名存放在users.txt文件中,每行一个
初始密码均设为123456
[root@localhost opt]# vim user.txt
zhangsan
lisi
wangermazi
zhaoliu
tianji
wangba
vim user.txt
#!/bin/bash
list=$(cat /opt/user.txt)
for v in $list
do
useradd $v
echo "123456" | passwd --stdin $v
echo "创建用户${v}成功"
done
根据IP地址检查主机状态
检测IP地址192.168.197.0-192.168.197.10段落
使用ping命令检测各主机的连通性
[root@localhost opt]# vim ip.sh
#!/bin/bash
for ((i=1;i<=10;i++))
do
ping -c 3 -i 0.2 -W 3 "192.168.197.$i" &> /dev/null
if [ $? -eq 0 ]
then
echo "Host 192.168.197.$i is up"
else
echo "Host 192.168.197.$i is down"
fi
done
shell中let命令
let 对整数进行数学运算
let和双小括号 (( )) 一样,let 命令也只能进行整数运算,不能对小数(浮点数)或者字符串进行运算。
语法格式
let 表达式
或
let "表达式"
或
let '表达式'
以上方式都等价于 ((表达式))
#!/bin/bash
for ((i=1;i<=10;i++));do
echo $i
done
#!/bin/bash
for ((i=1;i<=100;i+=2));do
let sum+=$i
done
echo "$sum"
while循环语句
while语句结构
重复测试某个条件,只要条件成立则反复执行
语句结构
while 条件测试操作
do
命令序列
done
九九乘法表
#!/bin/bash
for ((i=1;i<=9;i++))
do
for ((j=1;j<=i;j++))
do
sum=$[$i*$j]
echo -n "$i*$j=$sum "
done
echo
done
等腰三角形
#!/bin/bash
for ((i=1;i<=5;i++))
do
for ((k=5;k>=i;k--))
do
echo -n " "
done
for ((j=1;j<=2*i-1;j++))
do
echo -n "*"
done
echo ""
done
until语句结构
重复测试某个条件,只要条件不成立则反复执行
until 条件测试操作
do
命令序列
done
为指定用户发送在线消息
若用户不在线(未登录系统),则每5s试一次,直至用户登录系统后再发送信息,用户名与消息通过位置参数传递给脚本
1.位置参数个数大于
2.姓名属于系统用户 /etc/passwd
3.是否在线 until who
4.发送信息 echo “ ” | write 用户名
#!/bin/bash
username=$1
if [ $# -lt 1 ];then
echo "Usage : 'basename $0' <username> [<message>]"
exit 1
fi
if grep "$username" /etc/passwd > /dev/null;then :
else
echo “not user”
exit 2
fi
until who |grep "$username" > /dev/null;do
echo “user not login”
sleep 5
done
猜价格游戏
#!/bin/bash
num=$[RANDOM%101]
i=0
while true
do
let i++
read -p "请输入您猜测的价格(0-100)" a
if [ $a -eq $num ];then
echo "恭喜你猜对了"
break
elif [ $a -lt $num ];then
echo "低了"
else
echo "高了"
fi
done
echo "你一共猜了${i}次"