Linux Shell编程 条件判断语法
if条件判断语句
单分支 if 条件语句
语法格式:
if [条件判断式];then
程序
fi
或者
if [条件判断式]
then
程序
fi
在使用单分支 if 条件查询时需要注意几点:
- if 语句使用 fi 结尾,和一般语言使用大括号结尾不同。
- [条件判断式] 就是使用 test 命令判断,所以中括号和条件判断式之间必须有空格。
- then 后面跟符合条件之后执行的程序。可以放在 [] 之后,用";"分隔;也可以换行写入,就不需要";":
示例:通过脚本判断根分区的使用率是否超过 80%,如果超过 80% 则向管理员报警。 :
[root@localhost ~]# df -h
#查看一下服务器的分区状况
文件系统 容量 已用 可用 已用% %挂载点
/dev/sda3 20G .8G 17G % /
tmpfs 306M 306M % /dev/shm
/dev/sda1 194M 26M 158M % /boot
/dev/srO .5G .5G % /mnt/cdrom
[root@localhost ~]# vi sh/if1.sh
#!/bin/bash
#统计根分区的使用率
rate=$(df -h | grep "/dev/sda3" | awk '{print $5}' | cut -d"%"-f1)
#把根分区使用率作为变量值赋予变量rate
if [$rate -ge 】
#判断rate的值,如果大于等于80,则执行then程序
then
echo 'Warning! /dev/sda3 is full!!"
#打印警告信息。在实际工作中,也可以向管理员发送邮件
fi
"rate=$(df-h|grep "/dev/sda3"|awk'{print$5}'|cut-d"%"-f1)"命令:先使用"df-h"列出系统中的分区情况;然后使用"grep"命令提取出根分区行;再使用"awk"命令列出第五列,也就是根分区使用率这一列(不过使用率是 10%,不好比较,还要提取出 10 这个数字);最后使用"cut"命令(cut 命令比 awk 命令简单),以"%"作为分隔符,提取出第一列。
双分支条件语句
在双分支 if 条件语句中,当条件判断式成立时,则执行某个程序;当条件判断式不成立时,则执行另一个程序。语法如下:
if [条件判断式]
then
当条件判断式成立时,执行的程序
else
当条件判断式不成立时,执行的另一个程序
fi
示例:
#!/bin/bash
#判断输入的文件是否是一个目录
read -t -p "Please input a directory:" dir #read接受键盘的输入,并存入dir变量
if[-d $dir]
#测试$dir中的内容是否是一个目录
then
echo "yes"
#如果是一个目录,则输出yes
else
echo "no"
#如果不是一个目录,则输出no
fi
多分支 if 条件语句
在多分支 if 条件语句中,允许执行多次判断。也就是当条件判断式 1 成立时,执行程序 1;当条件判断式 2 成立时,执行程序 2;依次类推,当所有条件不成立时,执行最后的程序。语法如下:
if[条件判断式1]
then
当条件判断式1成立时,执行程序1
elif [条件判断式2]
then
当条件判断式2成立时,执行程序2
…省略更多条件...
else
当所有条件都不成立时,最后执行此程序、
fi
示例:用多分支 if 条件语句来判断用户输入的是一个个文件还是一个目录。
[root@localhost ~]#vi sh/if-elif.sh
#!/bin/bash
#判断用户输入的是什么文件
read -p "Please input a filename:" file
#接收键盘的输入,并赋予变量file
if[-z "$file"]
#判断file变量是否为空
then
echo "Error,please input a filename"
#如果为空,则执行程序1,也就是输出报错信息、
exit
#退出程序,并定义返回值为1 (把返回值赋予变量$?)
elif[!-e "$file"]
#判断file的值是否存在
then
echo 'Your input is not a file!"
#如果不存在,则执行程序2
exit
#退出程序,并定义返回值为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 is an other file!"
#如果以上判断都不是,则执行程序5
fi
exit 命令是退出执行程序的命令,如果符合条件 1(没有输入)和条件 2(输入的不是文件),则需要执行 exit 命令;否则程序还是会运行一下脚本的。至于 exit 后面的返回值,是自由定义的,主要用于把返回值赋予变量 $?。
示例:
[root@localhost ~]# chmod sh/if-elif.sh
#赋予执行权限
[root@localhost ~]# sh/if-elif.sh
#执行脚本
Please input a filename:
#没有任何输入
Error,please input a filename
#报错信息是脚本中自己定义的
[root@localhost ~]# echo $? #变量$?的返回值是我们自己定义的1
[root@localhost ~]# sh/if-elif.sh
Please input a filename: jkgeia
#随便输入不是文件的字符串
Your input is not a file!
#报错信息是自己定义的
[root@localhost ~]# echo $? #变量$?的返回值是我们自己定义的2
case多分支条件判断
case 语句和 if...elif...else 语句一样都是多分支条件语句,不过和多分支 if 条件语句不同的是,case 语句只能判断一种条件关系,而 if 语句可以判断多种条件关系。
case 语句的语法如下:
case $变量名 in
"值 1")
;;
如果变量的值等于值1,则执行程序1,值
")
如果变量的值等于值2,则执行程序2
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
case 语句会取出变量中的值,然后与语句体中的值逐一比较。如果数值符合,则执行对应的程序;如果数值不符,则依次比较下一个值;如果所有的值都不符合,则执行"*)"("*"代表所有其他值)中的程序。
case 语句以"case"开头,以"esac"结尾。
在每个分支程序之后要以";;"(双分号)结尾,代表该程序段结束。
示例如下:
[root@localhost ~]# vi sh/case.sh
#!/bin/bash
#判断用户输入
read -p "Please choose yes/no: " -t 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
请用户输入 yes 或 no,如果输入的是 yes,则输出"Your choose is yes!";如果输入的是 no,则输出"Your choose is no!";如果输入的是其他字符,则输出"Your choose is error!"。
Linux Shell编程 条件判断语法的更多相关文章
- Linux shell if条件判断2
前面介绍linux shell的if判断的语法,现在再补充一点. Linux shell if条件判断1 分支判断结构 if , case 下面两个结构语法,已经在前面有过示例. 结构1: ...
- shell中条件判断语法与判断条件小结
1. IF条件判断语法: if Athen dosthelif B dosthelse dosthfi 2. 判断条件: 2.1 字符串判断 str1 = str2 当两个串有相同 ...
- Linux之shell编程条件判断-if,while,for,case
if 语法格式 if condition then statements [elif condition then statements] [else statements ] fi 示例 vi if ...
- Linux学习 -- Shell编程 -- 条件判断
按照文件类型进行判断 两种格式 test -e /root/install.log [ -e /root/install.log ] 注意空格 适合用于脚本中 echo $?可以看到结果 [ - ...
- shell编程 条件判断式----利用 case ..... esac 判断
条件判断式----利用 case ..... esac 判断 case $变量名称 in <==关键词为 case ,还有变量前有钱字号 "第一个变量内容") &l ...
- shell编程 条件判断式----利用 if .... then ----多重
条件判断式----利用 if .... then ----多重 在同一个数据的判断中,如果该数据需要进行多种不同的判断时,应该怎么作?举例来说,上面的 sh06.sh 脚本中,我们只要进行一次 $yn ...
- shell编程-条件判断与流程控制
1.条件判断式 按照文件类型进行判断: 两种判断格式: test -e /root/install.log [ -e /root/install.log ] 判断命令是否正确执行: [ -d /roo ...
- shell 编程 -- 条件判断
1.按照文件类型进行判断(常用的)-b 判断该文件是否存在-d 判断是否存在,并且是否为目录(是目录就为真)-e 判断该文件是否存在(存在为真)-f 判断文件是否存在,并且是否为普通文件(是普通文件为 ...
- Linux shell case条件判断及位置变量
case语句使用于需要进行多重分支的应用情况 case分支判断结构 语法: case 变量名称 in value1) statement statemen ...
随机推荐
- Play on Words UVA - 10129 欧拉路径
关于欧拉回路和欧拉路径 定义:欧拉回路:每条边恰好只走一次,并能回到出发点的路径欧拉路径:经过每一条边一次,但是不要求回到起始点 ①首先看欧拉回路存在性的判定: 一.无向图每个顶点的度数都是偶数,则存 ...
- Vsphere笔记06 Vcenter 部署流程 1
Vcenter 部署流程 1 一.环境需求 1.需要两台装着WIN2K8 R2 64X的服务器 2.启用一台要添加活动目录角色,并且配置DC,DC的参数如下: 域名:justech-dc. ...
- grails email 发送邮件插件
1.配置email插件,在Config.groovy文件中配置: plugins { compile ":mail:1.0.5" } 2.配置Config.groovy文件: gr ...
- sql limit offset 区别
select * from table limit 2,1; //含义是跳过2条取1条数据,即读取第3条数据 select * from table limit 2 ...
- Eclipse 透视图(Perspective)
什么是透视图? 透视图是一个包含一系列视图和内容编辑器的可视容器.默认的透视图叫 java. Eclipse 窗口可以打开多个透视图,但在同一时间只能有一个透视图处于激活状态. 用户可以在两个透视图之 ...
- WPF绑定Binding及模式
绑定,就是把一个对象属性的值绑定在别的对象的属性上 1. 默认绑定 public class Company { public string Name { get; set; } } XAML代码 1 ...
- Unity3D学习笔记——IDE菜单栏
一:菜单栏: 1.File: 2.Edit: 3.Assets: 4.GameObject: 5.Component: 6.Window: 7.Help:
- Classification week6: precision & recall 笔记
华盛顿大学 machine learning :classification 笔记 第6周 precision & recall 1.accuracy 局限性 我们习惯用 accuracy ...
- Python简单的线程池
class ThreadPool(object): def __init__(self, max_num=20): # 创建一个队列,队列里最多只能有10个数据 self.queue = queue. ...
- 在执行save操作时候出现的诡异!
情景:有一份excel数据需要导入到数据库中,想了想就写了一个导入excel的小功能. .............................准备使用时候,就开搞了,擦! 什么鬼??? 全程无报错 ...