美文网首页
shell编程之流程控制

shell编程之流程控制

作者: chen_666 | 来源:发表于2020-11-16 14:13 被阅读0次

if 条件判断
1)、 单分支 if 条件语句
if [ 条件判断式 ];then
程序
fi
单分支条件语句需要注意几个点:
if 语句使用 fi 结尾,和一般语言使用大括号结尾不同
[ 条件判断式 ]就是使用 test 命令判断,所以中括号和条件判断式之间必须有空格
then 后面跟符合条件之后执行的程序,可以放在[]之后,用“;”分割。也可以换行写入,
就不需要“;”了,比如单分支 if 语句还可以这样写:
if [ 条件判断式 ]
then
程序
fi

[root@localhost ~]# vi sh/if1.sh
#!/bin/bash
#统计根分区使用率
# Author: shenchao (E-mail: shenchao@atguigu.com)
rate=$(df -h | grep "/dev/sda3" | awk '{print $5}' | cut -d "%" -f1)
#把根分区使用率作为变量值赋予变量 rate
if [ $rate -ge 80 ]
#判断 rate 的值如果大于等于 80,则执行 then 程序
then
 echo "Warning! /dev/sda3 is full!!"
#打印警告信息。在实际工作中,也可以向管理员发送邮件。
fi

if [ 条件判断式 ]
then
条件成立时,执行的程序
else
条件不成立时,执行的另一个程序
fi

[root@localhost ~]# vi sh/bakmysql.sh
#!/bin/bash
#备份 mysql 数据库。
# Author: shenchao (E-mail: shenchao@atguigu.com)
ntpdate asia.pool.ntp.org &>/dev/null
#同步系统时间
date=$(date +%y%m%d)
#把当前系统时间按照“年月日”格式赋予变量 date
size=$(du -sh /var/lib/mysql)
#统计 mysql 数据库的大小,并把大小赋予 size 变量
if [ -d /tmp/dbbak ]
#判断备份目录是否存在,是否为目录
then
#如果判断为真,执行以下脚本
 echo "Date : $date!" > /tmp/dbbak/dbinfo.txt
#把当前日期写入临时文件
 echo "Data size : $size" >> /tmp/dbbak/dbinfo.txt
#把数据库大小写入临时文件
 cd /tmp/dbbak
#进入备份目录
 tar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt &>/dev/null
#打包压缩数据库与临时文件,把所有输出丢入垃圾箱(不想看到任何输出)
 rm -rf /tmp/dbbak/dbinfo.txt
#删除临时文件
else
 mkdir /tmp/dbbak
#如果判断为假,则建立备份目录
 echo "Date : $date!" > /tmp/dbbak/dbinfo.txt
 echo "Data size : $size" >> /tmp/dbbak/dbinfo.txt
#把日期和数据库大小保存如临时文件
 cd /tmp/dbbak
 tar -zcf mysql-lib-$date.tar.gz dbinfo.txt /var/lib/mysql &>/dev/null
#压缩备份数据库与临时文件
 rm -rf /tmp/dbbak/dbinfo.txt
#删除临时文件
fi
[root@localhost ~]# vi sh/autostart.sh
#!/bin/bash
#判断 apache 是否启动,如果没有启动则自动启动
# Author: shenchao (E-mail: shenchao@atguigu.com)
port=$(nmap -sT 192.168.4.210 | grep tcp | grep http | awk '{print $2}')
#使用 nmap 命令扫描服务器,并截取 apache 服务的状态,赋予变量 port
if [ "$port" == "open" ]
#如果变量 port 的值是“open”
then
echo “$(date) httpd is ok!” >> /tmp/autostart-acc.log
#则证明 apache 正常启动,在正常日志中写入一句话即可
else
 /etc/rc.d/init.d/httpd start &>/dev/null
#否则证明 apache 没有启动,自动启动 apache
 echo "$(date) restart httpd !!" >> /tmp/autostart-err.log
#并在错误日志中记录自动启动 apche 的时间
fi

if [ 条件判断式 1 ]
then
当条件判断式 1 成立时,执行程序 1
elif [ 条件判断式 2 ]
then
当条件判断式 2 成立时,执行程序 2 …省略更多条件…
else
当所有条件都不成立时,最后执行此程序
fi

[root@localhost ~]# vi sh/if-elif.sh
#!/bin/bash
#判断用户输入的是什么文件
# Author: shenchao (E-mail: shenchao@atguigu.com)
read -p "Please input a filename: " file
#接收键盘的输入,并赋予变量 file
if [ -z "$file" ]
#判断 file 变量是否为空
then
 echo "Error,please input a filename"
#如果为空,执行程序 1,也就是输出报错信息
 exit 1
#退出程序,并返回值为 1(把返回值赋予变量$?)
elif [ ! -e "$file" ]
#判断 file 的值是否存在
then
 echo "Your input is not a file!"
#如果不存在,则执行程序 2
 exit 2
#退出程序,把并定义返回值为 2
elif [ -f "$file" ]
#判断 file 的值是否为普通文件
then
 echo "$file is a regulare file!"
#如果是普通文件,则执行程序 3
elif [ -d "$file" ]
#判断 file 的值是否为目录文件
then
 echo "$file is a directory!"
#如果是目录文件,则执行程序 4
else
 echo "$file is an other file!"
#如果以上判断都不是,则执行程序 5
fi

case $变量名 in
"值 1")
如果变量的值等于值 1,则执行程序 1
;;
"值 2")
如果变量的值等于值 2,则执行程序 2
::
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac

这个语句需要注意以下内容:
case 语句,会取出变量中的值,然后与语句体中的值逐一比较。如果数值符合,则执行对应
的程序,如果数值不符,则依次比较下一个值。如果所有的值都不符合,则执行“)”(“
代表所有其他值)中的程序。
case 语句以“case”开头,以“esac”结尾。

[root@localhost ~]# vi sh/case.sh
#!/bin/bash
#判断用户输入
# Author: shenchao (E-mail: shenchao@atguigu.com)
read -p "Please choose yes/no: " -t 30 cho
#在屏幕上输出“请选择 yes/no”,然后把用户选择赋予变量 cho
case $cho in
#判断变量 cho 的值
 "yes")
#如果是 yes
 echo "Your choose is yes!"
#执行程序 1
 ;;
 "no")
#如果是 no
 echo "Your choose is no!"
#执行程序 2
 ;;
 *)
#如果既不是 yes,也不是 no
 echo "Your choose is error!"
#则执行此程序
 ;;
esac

相关文章

  • shell编程之流程控制

    if 条件判断1)、 单分支 if 条件语句if [ 条件判断式 ];then程序fi单分支条件语句需要注意几...

  • 第二十三节、Shell编程

    一、什么是shell Shell是操作系统的最外层,Shell可以合并编程语言以控制进程和文件,以及启动和控制其它...

  • Linux_Shell脚本编程之流程控制

    if判断 基本语法: 应用实例 ifCase.sh案例:请编写一个shell程序,如果输入的参数,大于等于60,则...

  • Shell 编程的变量

    Shell 编程中,变量一般分为三种: 自定义变量: 仅在当前 Shell 实例中有效,其他 Shell 启动的程...

  • shell 案例

    Shell编程一 Shell防范ARP攻击 Shell编程二 Shell防范DDos攻击 Shell编程三 ...

  • # shell流程控制语句

    shell流程控制语句 任何编程语言都离不开流程控制语句,其实编程基本上就是掌握了流程控制语句,然后加上函数(或者...

  • shell 第一天

    shell编程初识 1.1 shell编程初识 shell的定义 Shell 是命令解释器 Shell 也是...

  • Linux基础知识目录

    硬链接、软链接重定向shell编程基础搭建vsftpdLinux C 编程基础Linux C 进程控制基础Linu...

  • shell编程

    一.shell编程 1.1 shell定义 命令解释器,也是程序设计语言,它有变量、关键词和各种控制语句,有自己的...

  • 78.shell编程

    shell编程 Shell脚本,是一种为shell编写的脚本程序。 Shell编程跟JavaScript、Pyth...

网友评论

      本文标题:shell编程之流程控制

      本文链接:https://www.haomeiwen.com/subject/prppbktx.html