基于linux下的shell 常用的控制语句及脚本运行控制

(一)for 语句:

循环定义变量,依次执行,批量处理;

有以下几种格式:
for NUM in 1 2 3
for NUM in {1..3}
for NUM in {a..f}
for NUM in `seq 1 3 `
for NUM in `seq 1 2 10` //可以设定步长;2就是步长,输出为 1 3 5

还可以是计算的方式(和C语言类似)

for((A=1;A<=10;A++))
do
done

1)脚本示例:
把所有的数据库备份成文件,执行脚本文件备份的数据库放在/mnt/mysql_dump/目录下,并且文件属性为.sql

vim /mnt/mysql-dump.sh
    #!/bin/bash
    DATABASE_MESSAGE=`mysql -uroot -EN -e "show databases;" | grep -E "^\*|schema$" -v`
    mkdir -p /mnt/mysql_dump
    for DATABASE in $DATABASE_MESSAGE
    do
            mysqldump -uroot $DATABASE > /mnt/mysql_dump/$(DATABASE).sql
            [ "$?" -eq "0" ] && {
                    echo -e "\033[31m$DATABASE is backuped!\033[0m"
            }
    done
sh /mnt/mysql-dump.sh

测试:查看/mnt/mysql_dump目录下是否有以sql结尾的文件.


(二)while 语句

格式:

while  判断条件
do   动作
done

示例:1)刷新时间

vim /mnt/test.sh

这里写图片描述
这里写图片描述
2)如果分区使用率超过80%,系统提出报警;

vim /mnt/test.sh
    #!/bin/bash
    DATA=`df | awk -F " " '/\/$/{print $5}' | awk -F "%" '{print $1}'`
    while ture
    do
            [ "$DATA" -ge "80" ]&&{
            echo your / will full! | mail -s warning root
            sleep 1
            }
    done
sh /mnt/test.sh

可以看到用户收到了邮件:
这里写图片描述
这里写图片描述


exit 、break 和 continue 的区别

exit 退出当前执行的脚本
break 中断当前的循环,不会影响循环以外的语句
continue 提前跳出循环,提前进入下一次

实验证明(exit、break和continue的区别):

扫描二维码关注公众号,回复: 1690442 查看本文章
[root@desktop mnt]# vim /mnt/test.sh
    #!/bin/bash
    for  NUM in {1..5}
    do 
        if
        ["$NUM" -eq 3] 
        then
               $1
        fi
        echo $NUM
    done
    echo hello westos!!

[root@desktop mnt]# sh test1.sh break
1
2
hello westos!!
[root@desktop mnt]# sh test1.sh exit
1
2
[root@desktop mnt]# sh test1.sh continue
1
2
4
5
hello westos!!

这里写图片描述

猜你喜欢

转载自blog.csdn.net/wangkana/article/details/80762503