if条件语句

if 语句的结构

在Sell脚本应用中,if语句是最为常用的一种流程控制方式.用来根据特定的条件测试结果分别执行不同的操作-如果…根据不同的复杂程度,if 语句的选择结构可以分为三种基本类型,适用于不同的应用场合:

单分支的if语句

if语句的“分支”指的是不同测试结果所对应的执行语句(一条或多条). 对于单分支的选择结构,只有在“条件成立”时才会执行相应的代码,否则不执行任何操作。单分支的if语句的语法格式如下:
if 条件测试操作
then
命令序列
fi
在上述语句结构中,条件测试操作即【条件表达式】语句,也可以是其他可执行的命令语句;【命令序列】指的是一条或多条可执行的命令行,也包括嵌套使用if语句或其他流程控制语句。
单分支if语句的执行流程:首先判断条件测试操作的结果,如果返回值为0,表达条件通过,则执行then后面的命令序列,一直到遇见fi结束判断为止,继续执行其他脚本代码;如果返回值不为0.则忽略then,忽略then后面的命令序列。直接调至fi行以后执行其他脚本代码。
在这里插入图片描述
事例1:
该脚本含义:查看该目录是否存在,不存在则新建。
#vi mount.sh
#!/bin/bash
mount_dir="/media/cdrom"
if [ ! -d $mount_dir ]如果不是变量等于的目录-d判断是否为目录
then
mkdir -p(嵌套) m o u n t d i r E c h o “ mount_dir Echo “ mountdirEchomount 目录创建完成”创建完成则提示信息
Fi
事例2:
当普通用户执行该脚本时,不行,当root用户执行时才可以。
#vi root.sh
#!/bin/bash
if [ “$USER” != “root” ]
then
echo “error:非root用户,权限不足”
exit 1
fi
fdisk -l /dev/sda

双分支的if语句:

对于双分支的结构。要求针对条件成立“条件不成立两种情况分别执行不同的操作。
语法格式:
1f 条件测试操作
then
命令序列1
else
命令序列2
fi
双分支if语句的执行流程:首先判断条件测试操作的结果,如果条件成立,则执行then后面的命令序列1忽略else及后面的命令序列2.直到遇见fi结束判断;如果条件不成立,则忽略then及后面的命令序列1.直接跳至else 后面的命令序列2并执行,直到遇见fi结束判断。
事例1:
通过位置参数$1来提供目标主机地址,然后根据ping命令监测结果给出相应的提示。
#vi ping.sh
#!/bin/bash
HOST=192.168.152.1
ping -c 3 $HOST &> /dev/null 监测是否能联通目标主机
if [ $? -eq 0 ] 判断前一条命令的返回状态
then
echo “host $HOST is up”
else
echo “host $HOST is down”
Fi
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
-c 3的意思是执行3行就会退出 $?判断是否正常(0正常,非0不正常)
事例2:
检查mysqld服务是否运行,如果已经运行则列出其监听地址,PID号。否则输出提示“警告:mysqld服务不可用”。
#vi mysqld.sh
#!/bin/bash
/etc/init.d/mysqld status &> /dev/null
if [ ? − e q 0 ] t h e n e c h o " 监 听 地 址 : ? -eq 0 ] then echo "监听地址: ?eq0]thenecho":(netstat -anpt | grep mysqld | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 4}̲')" ech…(pgrep -x mysqld)"
else
echo “警告:mysqld服务不可用”
fi
在这里插入图片描述
在这里插入图片描述

多分支的if语句


由于if 语句可以根据测试结果的成立.不成立分别执行操作,所以能够嵌套使用进行多次判断。例如,首先判断某学生的得分是否及格、若及格则再次判断是否高于90分等,多分支if语句的格式如下:
If 条件测试操作1
then
命令序列1
elif 条件测试操作2
then
命令序列2
.
.
else
命令序列n
Fi
上述语句结构中只嵌套了一个elif语句作为示例,实际上可以嵌套多个,if语句的嵌套在编写Shell 脚本时并不常用,因为多重嵌套容易使程序结构变得复杂。当确实需要使用多分支程序结构时,采用case语句更加方便。
多分支if语句的执行流程:首先判断条件测试操作1的结果,如果条件1成立,则执行命令序列1,然后跳至fi结束判断。如果条件1不成立,则继续判断条件2的结果,如果条件2成立,则继续执行命令序列2,然后跳至fi结束判断。。。。。。。如果所有条件都不满足,则执行else后面的命令序列n,直到fi结束判断。
事例:
编写一个成绩脚本1606a.sh。根据输入的分数不同来区分优秀、合格、不合格三挡。
#vi 1606a.sh
#!/bin/bash
read -p “输入分数(0-100):” GRADE
if [ $GRADE -ge 85 ] && [ G R A D E − l e 100 ] t h e n e c h o " GRADE -le 100 ] then echo " GRADEle100]thenecho"GRADE 分,优秀"
elif [ $GRADE -ge 70 ] && [ G R A D E − l e 84 ] t h e n e c h o " GRADE -le 84 ] then echo " GRADEle84]thenecho"GRADE分,合格"
else
echo “$GRADE分,不合格”
fi
在这里插入图片描述
事例2:
判断文件类型:
#!/bin/bash
#本脚本用来检测文件类型
read -ep “请输入要检测的文件路径:” file
if [ ! –e $file ];then
echo “文件不存在,请检查输入是否正确!”
elif [ -L $file ];then
echo “链接文件”
elif [ -d $file ];then
echo “目录”
elif [ -f $file ];then
echo “普通文件”
else
echo “其他文件类型”
Fi
判断httpd是否按照,如果安装了则启动,没有安装则安装然后在启动,然后在看一下启动有没有成功
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SAS提供了多种类型的判断语句,包括if语句条件语句。if语句条件组成,如果条件为真,则执行特定的操作。if语句后面可以跟随else语句,当布尔条件为假时执行相应的操作。此外,if语句还可以嵌套使用,即在if语句后面再跟一对if-then语句。在SAS中,if语句可以用于删除特定的观察值。例如,如果条件为真,则从数据集中删除特定的数据。 SAS的条件语句if-then的基本形式是:if 条件 then 执行;例如,如果年份小于2000,则执行删除操作。条件语句if-then可用于根据给定的条件执行单条语句。 if语句是用来进行条件判断的,其使用格式如下:if 要判断条件条件成立时要执行的操作;满足条件时执行的操作;不满足条件时执行的操作。if语句可以根据条件的不同执行不同的操作。在SAS中,通过if条件语句,可以根据具体的条件进行相应的数据处理和操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SAS IF判断语句](https://blog.csdn.net/lvchunyang66/article/details/85773029)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [SAS 条件语句](https://blog.csdn.net/m0_51011378/article/details/121053381)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [判断语句和循环语句(基础篇三)](https://download.csdn.net/download/weixin_38621624/14856899)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值