基于linux下的shell中常用语句

常用的语句
exit直接退出
break退出当前循环,不影响其他
continue跳出本层循环,进入下一次循环

[root@desktop mnt]# vim 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 test.sh
1
2
3
4
5
hello,westos!
[root@desktop mnt]# vim test.sh
[root@desktop mnt]# sh test.sh exit
1
2
[root@desktop mnt]# sh test.sh break
1
2
hello,westos!
[root@desktop mnt]# sh test.sh continue
1
2
4
5

hello,westos!



(1)for语句
[root@desktop mnt]# vim for.sh
#!bin/bash
for NUM in `seq 1 2 10` #使用seq可以设置步长
do
        echo $NUM
done
[root@desktop mnt]# sh for.sh
1
3
5
7
9
[root@desktop mnt]# vim for.sh
#!bin/bash
for NUM in {1..5} #相当于 `seq 1 5` , 也相当于((NUM=1;NUM<=5;NUM++))
do
        echo $NUM
done
[root@desktop mnt]# sh for.sh
1
2
3
4
5

实验:显示教室中可连通的网络
[root@desktop mnt]# vim check_host.sh
#!/bin/bash
for IP in `seq 0 50`
do
        ping -c1 -w1 172.25.254.$IP &> /dev/null && echo "172.25.254.$IP"
done

实验:备份数据库
[root@desktop mnt]# vim mysql_dump.sh
#!/bin/bash
DATABASE=`mysql -uroot -EN -e "show databases;"|grep -E "^\*|schema$" -v`
mkdir -p /mnt/mysql_dump
for DATABASE in $DATABASE
do
        mysqldump -uroot $DATABASE > /mnt/mysql_dump/${DATABASE}.sql
        [ "$?" -eq "0" ]&&{
                echo -e "\033[32m$DATABASE is backuped!\033[0m"
        }

done



[root@desktop mysql_backup]# sh  mysql_dump.sh
linux is backuped!
mysql is backuped!
test is backuped!

westos is backuped!



(2)while do语句
while true
do
    ***
done
实验:当根分区使用量超过80%时,向root用户发送邮件警告
[root@desktop mnt]# vim root_check.sh
#!/bin/bash
COUNT=`df|awk -F " " '/\/$/{print $5}'|awk -F "%" '{print $1}'`
while true
do
        [ "$COUNT" -ge "80" ]&&{
                echo Your / is full!| mail -s warning root
        }
        sleep 1

done



[root@desktop ~]# mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 3 messages 3 new
>N  1 root                  Mon Jun 18 05:07  18/601   "warning"
 N  2 root                  Mon Jun 18 05:07  18/601   "warning"
 N  3 root                  Mon Jun 18 05:07  18/601   "warning"
& q
You have mail in /var/spool/mail/root

[root@desktop ~]# > /var/spool/mail/root #清空邮件



实验:当根分区使用量超过80%时,在当前shell环境中显示
[root@desktop mnt]# vim root_check.sh
#!/bin/bash
COUNT=`df|awk -F " " '/\/$/{print $5}'|awk -F "%" '{print $1}'`
TTY=`ps $$|awk '/bash$/{print $2}'`
while true
do
        [ "$COUNT" -ge "80" ]&&{
                echo "Your / is full!"  >  /dev/$TTY
        }
        sleep 3
done

猜你喜欢

转载自blog.csdn.net/xdmaidou/article/details/80754694