shell脚本(三)
一. 使用if条件语句
案例:
#!/bin/bash
echo "===Check disk usage...==="
DISKU=df -h|awk '/vda1/{print $5}'|awk -F% '{print $1}'
if [ $DISKU -gt 10 ] ; then
echo "warning,Disk vda1 is over 90 usages....."
echo "warning,Disk vda1 is over 90 usages....."> /var/log/diskusage.log
else
echo "disk vda1 is normal.Good luck."
fi
1).根分区已用空间>80%则报警,否则不执行任何操作
#!/bin/bash
echo "===Check disk usage...==="
DISKU=df -h|awk '/vda1/{print $5}'|awk -F% '{print $1}'
if [ $DISKU -gt 10 ] ; then
echo "warning,Disk vda1 is over 90 usages....."
echo "warning,Disk vda1 is over 90 usages....."> /var/log/diskusage.log
else
echo "disk vda1 is normal.Good luck."
fi
2).判断/tmp目录下是否有win目录,若不存在则创建目录,存在不执行任何操作
#!/bin/bash
if [ ! -e /tmp/win ] ;then
echo "To create dir win"
mkdir /tmp/win
elif [ -f /tmp/win ] ;then
echo "To del win file"
rm -rf /tmp/win
echo "To create dir win"
mkdir /tmp/win
else
echo "此目录win已经存在了。"
fi
3).判断httpd是否已经启动,若已启动,则提示已运行,否则启动httpd服务
Systemctl status httpd
If [ $? -eq 0 ]
Then
Echo “Service httpd is running.”
Else
Systemctl start httpd
Fi
4).执行脚本时指定IP,结果为ping该主机,若通,则显示up,否则显示down
#!/bin/bash
ping -c2 172.18.199.10&>> /dev/null
if [ $? -eq 0 ]
then
echo "The IP $1 is up."
else
echo "The IP $1 is down."
fi
示例:
脚本可互动输入分数,并判断分数在90-100之间,判断为优秀,60-89之间为合格,59-40以下其他为不及格努力;39以下复读,其它输入为非法输入。
#!/bin/bash
echo "=======Test========"
read -p "请输入你的成绩" Source
if [ $Source -gt 100 ] ; then
echo "输入错误"
elif [ $Source -lt 0 ] ; then
echo "输入错误"
elif [ $Source -ge 90 ] ; then
echo "优秀"
elif [ $Source -ge 60 ] ; then
echo "及格"
elif [ $Source -ge 40 ] ; then
echo "努力"
else
echo "复读";
fi
二、循环语句:
1、FOR循环写法
for((i=1;i<=10;i++));
for i in `seq 10`
for i in {1..10}
#!/bin/bash
for i in {1..10}
do
echo “$i”
done
#!/bin/bash
for i in $*
Do
Echo “$i”
Done
do
echo $i
done
vim num.txt
#!/bin/bash
for i in `cat num.txt`
Do
Echo “$i”
Done
#!/bin/bash
ipnet='172.18.11.'
for IPaddress in {1..254}
do
ping -c 1 $ipnet$IPaddress &> /dev/null
if [ $? -eq 0 ] ; then
echo "This host $ipnet$IPaddress is up."
echo "This host $ipnet$IPaddress is up." >> /tmp/ping-18net.log
else
echo "This host $ipnet$IPaddress is down."
fi
done
echo "Net18 ping ok."
#!/bin/bash
for (( i = 1; i <=9; i++ ))
do
for (( j=1; j <= i; j++ ))
do
let "chengji = i * j"
echo -n "$i*$j=$chengji "
done
echo ""
done
2、while循环写法
如:
i=1
while [ $i -lt 10 ]
do
echo $i
let i++
done
i++ 等同于 i=i+1
i+=1 等同于 i=i+1
i+=2 i=i+2
i-- i=i-1
i-=2 i=i-2
i*=2 i=i*2
循环结构中数值增量需要与let合作,如let i++
作业:用脚本完成
1.公司要求新进一批实习生,要为他们建立用户名shixi01 ---- shixi10,要求所有人的密码初始都为great123。
2.用FOR循环写九九乘法表。
3.用for及while结构分别完成扫描本网段址的脚本