shell的if-else判断结构

if-else笔记

if判断是shell编程中使用频率最高的语法结构

简单if结构

bash 复制代码
最简单的if执行结构如下所示:

if expression				#expression 表示测试条件
then
	command						#满足expression后要执行的命令
	command
	...
f1

使用这种简单 if 结构时,要特别注意测试条件后如果没有:,则 then 语句要换行,否则会产生不必要的错误。如果 f和 then 处于同一行,则必须用;。

脚本1

bash 复制代码
#!/bin/bash
##filename:youok.sh
echo "Are you ok?"
read answer
if [[ $answer == [Yy]* || $answer == [Mm]aybe ]]    #没有";",then需要换行
then
echo "Glad to hear it."
fi

if 的条件判断部分使用了扩展的 test 语\[·],\[]中可以使用正则表达式进行条件匹配,脚本功能是读取输入内容

这个脚本提供了一个基本的用户互动,并根据他们的输入做出不同的回应。如果用户输入以 'Y' 或 'y' 开头,或者是 "maybe",它将做出积极的回应。

bash 复制代码
[root@localhost tmp]# sh youok.sh 
Are you ok?
Y
Glad to hear it.

[root@localhost tmp]# sh youok.sh 
Are you ok?
maybe
Glad to hear it.

脚本2

bash 复制代码
#!/bin/bash

echo "你好!你今天心情如何?(请输入 '好' 或 '不好')"
read mood

if [[ $mood == [好好]* ]]; then
    echo "很高兴听到你心情不错!"
elif [[ $mood == [不不好]* ]]; then
    echo "抱歉听到你心情不好,有什么我可以帮助你的吗?"
else
    echo "我不太明白你的回答。"
fi

脚本会询问用户今天的心情如何,然后根据用户的回答做出不同的回应

bash 复制代码
[root@localhost tmp]# sh youok_1.sh 
你好!你今天心情如何?(请输入 '好' 或 '不好')
好
很高兴听到你心情不错!
[root@localhost tmp]# sh youok_1.sh 
你好!你今天心情如何?(请输入 '好' 或 '不好')
不好
抱歉听到你心情不好,有什么我可以帮助你的吗?
[root@localhost tmp]# sh youok_1.sh 
你好!你今天心情如何?(请输入 '好' 或 '不好')
?
我不太明白你的回答。

if/else结构

if/else 结构也是经常使用的,这个结构是双向选择语句,当用户执行脚本时如果不满足if后的表达式,就会执行 else 后的命令,所以有很好的交五性。其结构为:

bash 复制代码
if	expression1			#expression1表示测试条件
then
	command				#满足#expression1条件,则执行下面这些命令
	...
	command
else
	command				##不满足#expression1条件,则执行下面这些命令
	...
	command
fi
相关推荐
深爱水瓶 血影S狂风1 小时前
函数调用过程探究
linux·运维·服务器
酷可达拉斯1 小时前
Linux操作系统-磁盘空间使用率100%如何处理?
linux·运维·服务器·云计算·bash
Lyra_Infra2 小时前
Java 应用启动脚本 JDK 路径适配优化文档
java·shell
AIgorithmGEEK2 小时前
Linux 权限管理:从「Permission Denied」到「畅行无阻」
linux·权限·chmod·粘滞位·umask·文件权限的构成
BullSmall3 小时前
scanoss-engine 本地最简部署 & 扫描命令(Linux/Anolis OS)
linux·运维·服务器
bellus-3 小时前
Ubuntu 26.04 Miniforge3 安装与配置完整指南
linux·运维·ubuntu
用什么都重名5 小时前
Ubuntu 24.04 安装 NVIDIA 驱动:解决 “NVIDIA-SMI has failed“ 报错全记录
linux·运维·ubuntu
Industio_触觉智能5 小时前
瑞芯微ISP内核驱动深度解析|RKISP39从架构到Probe初始化全流程(上篇)
linux·嵌入式硬件·硬件架构·摄像头·isp·瑞芯微·rk3576
有续技术5 小时前
三菱 (Mitsubishi) 机床 设置查看 IP 地址
linux·服务器·网络
yagami_gagami5 小时前
第四届黄河流域公安院校电子物证个人赛服务器取证
linux·服务器·网络·mysql·安全·docker·llama