shell编程中的常用语句|shell编程中的常用语句 for,while语句

一,for循环

1,for循环格式

for NUM in 1 2 3 for NUM in {1..3} for NUM in `seq 1 3` for NUM in {a..f} for NUM in {1..$a} 注意:这个a要么在脚本里面声明了,要么export提升到环境或用户或系统级别了 for ((A=1; A<=10; A++)) for NUM in `seq 1 2 10` 2表示步长,没写默认步长为1

for NAME in westos linux 666 也是可以的echo $NAME依次打印westos linux 666

注意:

exit是完全中断脚本
break是跳出整个循环,但是循环之外的还是执行
continue是跳出本次循环,进入下一次循环
return不能直接用
for循环可以传递参数,里面的for可以使用外面的for的变量

shell编程练习
1,查看网段里面连通的主机
shell编程中的常用语句|shell编程中的常用语句 for,while语句
文章图片

###如果连通蓝色背景输出ip,如果不连通输出空行
测试
shell编程中的常用语句|shell编程中的常用语句 for,while语句
文章图片

shell编程中的常用语句|shell编程中的常用语句 for,while语句
文章图片

shell编程中的常用语句|shell编程中的常用语句 for,while语句
文章图片


2,备份数据库linux,mysql,test,,westos,并且放在/mnt/maysql_backup里面
[root@100 mnt]# mysql -uroot -EN -e "show databases; " *************************** 1. row *************************** information_schema *************************** 2. row *************************** linux *************************** 3. row *************************** mysql *************************** 4. row *************************** performance_schema *************************** 5. row *************************** test *************************** 6. row *************************** westos


shell编程中的常用语句|shell编程中的常用语句 for,while语句
文章图片

#!/bin/bash DATABASE_MESSAGE=`mysql -uroot -EN -e "show databases; " | grep -E "^\*|schema$" -v`去掉以*开头和schema结尾的行 \对*转义 mkdir -p /mnt/mysql_dump for DATABASE_NAME in $DATABASE_MESSAGE!!!!这里直接对变量$DATABASE_MESSAGE做循环,linux,mysql,test,westos依次赋值给DATABASE_NAME do mysqldump -uroot $DATABASE_NAME > /mnt/mysql_dump/${DATABASE_NAME}.sql [ "$?" -eq "0" ] && { echo -e "\033[47m$DATABASE_NAME is backuped \033[0m" } done


测试

shell编程中的常用语句|shell编程中的常用语句 for,while语句
文章图片


成功!!!
注意:像这样的for DATABSE_NAME in $DATABASE_MESSAGE这样的很常用,这里的DATABASE_MESSAGE必须是已经显示在终端的列,这样写比较简单,但是要求不能有其他命令插在显示和for之间,也就是说如果是一个文件(userfile),那么这里要写for NAME in `cat userfile`!!!

二,while循环
1,格式

while 条件
do
done

shell编程练习
uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

使用whiel时实刷新uptime

shell编程中的常用语句|shell编程中的常用语句 for,while语句
文章图片
####sleep表示延时 echo -n表示不换行

测试

shell编程中的常用语句|shell编程中的常用语句 for,while语句
文章图片


成功!!!
####如何发邮件?
[root@localhost ~]# echo hello world | mail -s "nihao" root非交互式 -s表示主题是nihao You have mail in /var/spool/mail/root [root@localhost ~]# mail直接查看 Heirloom Mail version 12.5 7/5/10.Type ? for help. "/var/spool/mail/root": 2 messages 1 new 1 rootThu Jun 21 13:3121/768"nihao" >N2 rootThu Jun 21 13:3120/757"nihao" & Message2: From root@localhost.localnameThu Jun 21 13:31:52 2018 Return-Path: From: root Date: Thu, 21 Jun 2018 13:31:52 -0400 To: root@localhost.localname Subject: nihao User-Agent: Heirloom mailx 12.5 7/5/10 Content-Type: text/plain; charset=us-ascii Status: Rhello world 邮件内容


shell编程练习

根分区的使用量达到了80%就给root用户法邮件报警

shell编程中的常用语句|shell编程中的常用语句 for,while语句
文章图片


#!/bin/bash DISK_NUM=`df | awk '/\/$/{print $5}' | awk -F "%" '{print $1}'`\/是对\转义,打印以/结尾的行的第5列,然后以%为分隔符,打印第一列 while true do [ "$DISK_NUM" -ge "80" ] && {如果大于80报警 echo "Your / will full !!! " | mail -s "warning" root } sleep 1每隔1秒做一个while循环 done

测试

shell编程中的常用语句|shell编程中的常用语句 for,while语句
文章图片

shell编程中的常用语句|shell编程中的常用语句 for,while语句
文章图片


收到邮件!!!
shell编程练习

根分区的使用量达到了80%就直接在终端显示警告
[root@localhost ~]# ps PID TTYTIME CMD 3645 pts/100:00:00 bash 8101 pts/100:00:00 ps [root@localhost ~]# ps | awk '/bash$/{print $2}'显示当前tty设备 pts/1

shell编程中的常用语句|shell编程中的常用语句 for,while语句
文章图片
####直接显示在终端设备上
测试

shell编程中的常用语句|shell编程中的常用语句 for,while语句
文章图片

【shell编程中的常用语句|shell编程中的常用语句 for,while语句】成功!!!

    推荐阅读