shell脚本——while循环语句(包含应用案例)
Posted stan Z
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本——while循环语句(包含应用案例)相关的知识,希望对你有一定的参考价值。
while循环语句
while循环语法结构
while 表达式
do
command...
done
while [ 1 -eq 1 ] 或者 (( 2 > 1 ))
do
command
command
...
done
当条件测试成立(必须为真),返回值为0才能执行循环体
应用案例
计算1-100偶数和
#!/bin/bash
#定义变量
sum=0
i=2
while [ $i -le 100 ]
do
let sum=$sum+$i
let i+=2
done
echo "1-100的偶数和为:$sum"
# for
#!/bin/bash
sum=0
for ((i=0;i<=100;i+=2))
do
let sum=$sum+$i
done
echo "1-100的偶数和为:$sum"
同步系统时间
- 写一个脚本,30秒同步一次系统时间,时间同步服务器192.168.188.188
- 如果同步失败,则进行邮件报警,每次失败都报警
- 如果同步成功,也进行邮件通知,但是成功100次才通知一次
#!/bin/bash
# 该脚本用于时间同步
NTP=10.1.1.1
count=0
while true
do
ntpdate $NTP &>/dev/null
if [ $? -ne 0 ];then
echo "system date failed" |mail -s "check system date" root@localhost
else
let count++
if [ $count -eq 100 ];then
echo "systemc date success" |mail -s "check system date" root@localhost && count=0
fi
fi
sleep 30
done
直角三角形
#!/bin/bash
read -p "请输入三角形的高:" h
i=1
while [ $i -le $h ]
do
j=1
while [ $j -le $i ]
do
echo -n "*"
let j++
done
echo
let i++
done
等腰三角形
#!/bin/bash
read -p "请输入三角形的高:" h
i=1
while [ $i -le $h ]
do
a=$[ $h - $i ]
j=1
while [ $j -le $a ]
do
echo -n " "
let j++
done
b=$((2*$i - 1 ))
k=1
while [ $k -le $b ]
do
echo -n "*"
let k++
done
echo
let i++
done
倒等腰三角形
#!/bin/bash
read -p "请输入三角形的高:" h
i=1
while [ $i -le $h ]
do
j=1
while [ $j -le $i ]
do
echo -n " "
let j++
done
k=0
a=$(( 2*($h-$i) - 1 ))
while [ $k -lt $a ]
do
echo -n "*"
let k++
done
echo
let i++
done
菱形
#!/bin/bash
# by stanZ
read -p "请输入菱形半径:" h
i=1
while [ $i -le $h ]
do
a=$[ $h -$i ]
j=1
while [ $j -le $a ]
do
echo -n " "
let j++
done
b=$((2*$i - 1))
k=1
while [ $k -le $b ]
do
echo -n "*"
let k++
done
echo
let i++
done
u=1
while [ $u -lt $h ]
do
for((n=1;n<=$u;n++))
do
echo -n " "
done
l=$(( 2*($h-$u)-1 ))
for((m=1;m<=$l;m++))
do
echo -n "*"
done
echo
let u++
done
批量创建用户
我们将需要创建的用户名和密码写入文件中 使用while遍历创建
假设文件是ip.txt
maomao 123
zhuzhu 456
niuniu 789
#!/bin/bash
#while create user
#v1.0 by stanZ 2020-12-17
if [ $# -eq 0 ];then
echo "usage:`basename $0` file"
exit 10
fi
if [ ! -f $1 ];then
echo "error file"
exit 5
fi
while read line
do
user=`echo $line |awk 'print $1'`
pass=`echo $line |awk 'print $2'`
id $user &>/dev/null
if [ $? -eq 0 ];then
echo "$user already exists"
else
useradd $user
echo "$pass" |passwd --stdin $user &>/dev/null
if [ $? -eq 0 ];then
echo "$user is created."
fi
fi
done < $1
测试网段存活主机
ping3次 如果都失败 则判断主机没有存活
#!/bin/bash
while read ip
do
fail_count=0
#for i in `seq 3`
for i in 1..3
do
ping -c1 -W1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo "$ip ping is ok."
break
else
echo "$ip ping is failure:$i"
let fail_count++
fi
done
if [ $fail_count -eq 3 ];then
echo "$ip ping is failure!!!"
fi
done <ip.txt
以上是关于shell脚本——while循环语句(包含应用案例)的主要内容,如果未能解决你的问题,请参考以下文章