if结构用于在Shell脚本中进行判定。如果指定的条件为真,则执行指定的命令。
- if和then若写在同一行,then与语句之间要使用分号“ ; ”隔开。if语句结构一定要以“ fi ”结尾。
1.单分支结构
- 语法格式
if condition
then
command1
command2
...
commandN
fi
-
脚本应用实例
-
任务目标:判断挂载点是否存在,不存在就创立
[root@localhost ley]# cat chkmountdir.sh
#!bin/bash
#######################################################
#
# FILE:chkmountdir.sh
# USAGE: ./chkmountdir.sh
#
# DESCRTPTION:
# OPTIONS: --
# REPUIREMENTS: --
# BUGS: --
# NOTES: --
# AUTHOR: LEY
# ORGANIZATION:
# CREATED: 04/10/2024 16:13
# REVISION: --
#####################################################
MOUNT_DIR="/media/cdrom/"
#判断挂载点不存在,则创建该目录
if [ ! -d $MOUNT_DIR ]
then
mkdir -p $MOUNT_DIR
fi
[ley@localhost ~]$ chmod +x chkmountdir.sh
[root@localhost ley]# bash chkmountdir.sh
[root@localhost ley]# ls -R /media/
/media/:
cdrom
/media/cdrom:
2. 双分支结构
- 语法格式
if condition
then
command1
command2
...
commandN
else
command
fi
-
脚本应用实例
-
任务目标:测试并判断指定主机是否可以ping通
-
目标主机的地址以位置参数提供
[root@localhost ley]# cat pinghost.sh
#!/bin/bash
#######################################################
#
# FILE:pinghost.sh
# USAGE: ./pinghost.sh
#
# DESCRTPTION:
# OPTIONS: --
# REPUIREMENTS: --
# BUGS: --
# NOTES: --
# AUTHOR: LEY
# ORGANIZATION:
# CREATED: 04/10/2024 16:21
# REVISION: --
#####################################################
#测试指定目标地址的网络连接状态,使用了 ping 命令来测试网络连接,会发送 3 个 ICMP 回显请求到指定的目标地址,并设置每个请求之间的间隔为 0.2 秒,超时时间为 3 秒。&> /dev/null 部分将命令的标准输出和标准错误重定向到 /dev/null,意味着命令的输出将被丢弃,不会显示在终端上。
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
if [ $? -eq 0 ];then
#状态码与0相等,则打印Host $1 is up.
echo "Host $1 is up."
else
#状态码与0不相等,则打印Host $1 is down.
echo "Host $1 is down."
fi
[root@localhost ley]# chmod +x pinghost.sh
[root@localhost ley]# bash pinghost.sh 10.0.0.168 ##ping IP地址
Host 10.0.0.168 is up.
[root@localhost ley]# bash pinghost.sh 10.0.0.1 ##ping Windows的IP地址
Host 10.0.0.1 is up.
[root@localhost ley]# bash pinghost.sh 10.0.0.2 ##ping网关
Host 10.0.0.2 is up.
[root@localhost ley]# bash pinghost.sh 110.242.68.66 ##ping百度
Host 110.242.68.66 is up.
3.多分支结构
- 语法格式
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
-
脚本应用实例
-
任务目标:输入一个数,判断成绩分档
85~100优秀、70 ~ 84 良好、低于70分,不及格
[root@localhost ley]# cat gardediv.sh
#!/bin/bash
#######################################################
#
# FILE:gardediv.sh
# USAGE: ./gardediv.sh
#
# DESCRTPTION:
# OPTIONS: --
# REPUIREMENTS: --
# BUGS: --
# NOTES: --
# AUTHOR: LEY
# ORGANIZATION:
# CREATED: 04/10/2024 16:35
# REVISION: --
#####################################################
#输入分数,并将输入值赋给FS
read -p "请输入分数(0-100): " FS
if [ $FS -ge 85 ] && [ $FS -le 100 ];then
#分数100~85之间打印 XX分!优秀
echo "$FS分!优秀"
elif [ $FS -ge 70 ] && [ $FS -le 84 ];then
#分数84~70之间打印 XX分!合格
echo "$FS分!合格"
else
#70以下的分数打印 XX分!不合格
echo "$FS分!不合格"
fi
[root@localhost ley]# chmod +x gardediv.sh
[root@localhost ley]# bash gardediv.sh
请输入分数(0-100): 75
75分!合格
[root@localhost ley]# bash gardediv.sh
请输入分数(0-100): 95
95分!优秀
标签:Shell,--,sh,语法,实例,bash,ley,root,localhost
From: https://blog.csdn.net/2302_76195174/article/details/137635641