Shell编程-if和else

news2024/10/17 21:25:24

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们前面学习了那么多命令,以及涉及到部分逻辑判断的问题。从简单来说,他就是Shell编程,只有由于命令比较单一,只能实现比较简单的功能。如果我们把多个操作都放到一起去,并添加更复杂的逻辑在里面,他就是Shell编程。所以我们主要从以下几个方面讲解Shell编程:

Shell编程-什么是shell

Shell编程-变量

Shell编程-数据类型

Shell编程-逻辑判断

Shell编程-if判断

Shell编程-if和else(本章节)

Shell编程-while循环

Shell编程-for循环

Shell编程-case

Shell编程-break

Shell编程-continue

Shell编程--函数

Shell编程-案例(一)

Shell编程-案例(二)

Shell编程-小结

上一小节的if判断,只考虑了满足条件以后需要做什么,真实环境肯定不可能出现这样的情况的,所以还必须要考虑如果不满足条件以后,需要怎么做。

在Shell脚本中,if 是用于进行条件判断的关键字。它允许根据某个条件的真假来决定执行不同的代码块。if 语句加上失败的基本结构如下:

if [ condition ]; then
    # 当条件为真时执行的命令或代码块
else
    # 当条件为假时执行的命令或代码块(可选)
fi

if 语句的用法解析:

其实这里比单独的if就是多加了一个失败的分支。

  1. 条件部分

    • condition 是一个用于测试真假的表达式或命令。在 if 语句中,condition 会被解释为一个命令,其退出状态码(0 表示真,非0 表示假)决定了 if 语句执行哪个分支。

  2. then 和 else 部分

    • then 关键字标志着条件为真时执行的命令或代码块的开始。

    • else 部分是可选的,用于指定条件为假时要执行的命令或代码块。

  3. fi 结束符

    • fi 是 if 语句的结束标志,表示条件判断结束。

示例:​​​​​​​

#!/bin/bash
# 定义一个变量
age=25
# 使用 if 进行条件判断
if [ "$age" -ge 18 ]; then
    echo "你是正确的"
else
    echo "你是错误的"
fi

在上面的示例中,if [ "$age" -ge 18 ] 是条件部分,如果变量 age 的值大于等于 18,则执行 echo "你是正确的";否则执行 echo "你是错误的"

多个条件判断:

可以通过逻辑运算符(如 &&||)和嵌套 if 语句来实现复杂的条件逻辑。​​​​​​​

#!/bin/bash

# 定义两个变量
score=80
attendance="present"

# 多个条件判断示例
if [ "$score" -ge 70 ] && [ "$attendance" = "present" ]; then
    echo "Student passed the exam."
elif [ "$score" -ge 60 ] || [ "$attendance" = "present" ]; then
    echo "Student has marginal performance."
else
    echo "Student did not pass the exam."
fi

在这个示例中,根据 score 和 attendance 的值,选择不同的输出。

真实案例

还是接着上小节的if的脚本,这个脚本就考虑了所有步骤会出现失败的情况。当然这个脚本只要版本号和依赖环境没问题这个脚本确实可以编译完成nginx的。​​​​​​​

#!/bin/bash

# 定义变量
NGINX_VERSION="1.25.1"
DOWNLOAD_URL="http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz"
INSTALL_DIR="/usr/local/nginx"

# 下载 Nginx 源代码
echo "开始下载 Nginx 源代码..."
wget -q $DOWNLOAD_URL
if [ $? -ne 0 ]; then
    echo "下载 Nginx 源代码失败!"
    exit 1
else
    echo "下载 Nginx 源代码成功!"
fi

# 解压源代码
echo "开始解压 Nginx 源代码..."
tar -zxf nginx-${NGINX_VERSION}.tar.gz
if [ $? -ne 0 ]; then
    echo "解压 Nginx 源代码失败!"
    exit 1
else
    echo "解压 Nginx 源代码成功!"
fi

# 进入目录
cd nginx-${NGINX_VERSION}
if [ $? -ne 0 ]; then
    echo "进入目录失败!"
    exit 1
else
    echo "成功进入目录!"
fi

# 配置编译选项
echo "开始配置 Nginx..."
./configure --prefix=$INSTALL_DIR
if [ $? -ne 0 ]; then
    echo "配置 Nginx 失败!"
    exit 1
else
    echo "配置 Nginx 成功!"
fi

# 编译
echo "开始编译 Nginx..."
make
if [ $? -ne 0 ]; then
    echo "编译 Nginx 失败!"
    exit 1
else
    echo "编译 Nginx 成功!"
fi

# 安装
echo "开始安装 Nginx..."
make install
if [ $? -ne 0 ]; then
    echo "安装 Nginx 失败!"
    exit 1
else
    echo "安装 Nginx 成功!"
fi

总结

  1. 这个脚本如果只要有任何一个步骤失败,则会退出整个脚本。

  2. 这里数字1,其实就是程序的退出码,理论上只要是非0的自然数都可以,只是个人使用1而已。

  3. if的脚本一般很少会单独使用,一般都需要配置else进行配合使用。

图片

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2215998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一键快捷回复软件助力客服高效沟通

双十一临近,电商大战一触即发!在这个购物狂欢的热潮中,客服团队的效率至关重要。今天我要和大家分享一个非常实用的快捷回复软件,特别是为电商客服小伙伴们准备的。这款软件能够极大地提高你的工作效率,让你在处理客户…

小程序开发设计-模板与配置:WXML模板语法⑨

上一篇文章导航: 小程序开发设计-协同工作和发布:协同工作⑧-CSDN博客https://blog.csdn.net/qq_60872637/article/details/142455703?spm1001.2014.3001.5501 注:不同版本选项有所不同,并无大碍。 目录 上一篇文章导航&…

OpenAI 公布了其新 o1 模型家族的元提示(meta-prompt)

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

开发板资源介绍【STM32MP157 学习笔记】

引言 FS-MP1A 开发板是基于 ST(意法半导体)公司的 STM32MP1 系列微处理器设计的先进开发板。该系列处理器集成了 Arm Cortex-A7 和 Cortex-M4 两种内核的异构架构,在高性能和灵活性的基础上,保证了低功耗、实时控制和高度集成化。…

阿里 C++面试,算法题没做出来,,,

我本人是非科班学 C 后端和嵌入式的。在我面试的过程中,竟然得到了阿里​ C 研发工程师的面试机会。因为,阿里主要是用 Java 比较多,C 的岗位比较少​,所以感觉这个机会还是挺难得的。 阿里 C 研发工程师面试考了我一道类似于快速…

深度学习-22-基于keras的十大经典算法之深度神经网络DNN

文章目录 1 深度神经网络(DNN)1.1 DNN简介1.2 DNN基本结构2 模拟应用2.1 构建模型2.2 训练模型2.3 模型预测3 鸢尾花数据集3.1 加载数据3.2 构建模型3.3 训练模型3.4 模型预测4 问题及解决5 参考附录1 深度神经网络(DNN) 1.1 DNN简介 背景:深度神经网络(DNN)也叫多层感…

歌曲怎么去掉原唱只留伴奏?创作无界,轻松获取伴奏音轨

在音乐制作、翻唱或是卡拉OK等场合,我们经常需要歌曲的伴奏版本,即去掉原唱声音,只保留背景音乐的部分。然而,并非每首歌曲都会官方发布伴奏版本,这时我们就需要借助一些技术手段来实现这一目标。本文将介绍几种常见的…

linux线程 | 同步与互斥(上)

前言:本节内容主要是线程的同步与互斥。 本篇文章的主要内容都在讲解互斥的相关以及周边的知识。大体的讲解思路是通过数据不一致问题引出锁。 然后谈锁的使用以及申请锁释放锁的原子性问题。 那么, 废话不多说, 现在开始我们的学习吧&#x…

使用OpenCV实现基于EigenFaces的人脸识别

引言 人脸识别技术近年来得到了飞速的发展,它被广泛应用于安全监控、门禁系统、智能设备等领域。其中,基于特征脸(EigenFaces)的方法是最早期且较为经典的人脸识别算法之一。本文将介绍如何使用Python和OpenCV库实现一个简单的人…

【LeetCode】每日一题 2024_10_15 三角形的最大高度(枚举、模拟)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动! 题目:三角形的最大高度 代码与解题思路 久违的简单题 这道题读完题目其实不难想到有两条路可以走: 1、题目很明显只有两种情况,枚举是第一个球是红球还是蓝球这两种情…

导数的概念及在模型算法中的应用

一. 导数概念与计算 1. 导数的物理意义: 瞬时速率。一般的,函数yf(x)在x处的瞬时变化率是 2. 导数的几何意义: 曲线的切线,当点趋近于P时,直线 PT 与曲线相切。容易知道,割线的斜率是当点趋近于 P 时&…

UE5学习笔记25-游戏中时间同步

一、原因 1.由于网络问题会导致服务器上的时间和客户端上获得的时间不一致 二、解决方法 在程序启动时向服务器请求服务器的时间返回给客户端并获得客户端发送消息的往返的时间,在获得客户端上的时间,用服务器上获得的时间加上往返时间减去客户端上的时…

稳字诀! 洞见 强者的社交格局:从不恋战——早读(逆天打工人爬取热门微信文章解读)

都是文字 引言Python 代码第一篇 洞见 强者的社交格局:从不恋战第二篇 稳字诀结尾 引言 今天很奇怪 一直都挺烦造的 好像有很多事情忙 但是就是忙着找不定 不能定下心来 主要还是在股市 其他方面应该没啥 计划表还是不够给力 没办法把心在约定住 稳字诀 勤燃香,奋…

深入 IDEA 字节码世界:如何轻松查看 .class 文件?

前言: 作为一名 Java 开发者,理解字节码对于优化程序性能、调试错误以及深入了解 JVM 运行机制非常重要。IntelliJ IDEA 作为最流行的开发工具之一,为开发者提供了查看 .class 文件字节码的功能。在本文中,我将带你一步步探索如何…

在 Spring 中使用 @EhCache 注解作为缓存

文章目录 项目概况项目设置一个简单的 RESTful Web 服务Spring 整合 EhCache第 1 步:更新依赖项以使用 EhCache Spring 注解第 2 步:设置自定义缓存管理器第 3 步:配置 EhCache第 4 步:测试缓存 刷新缓存总结推荐阅读文章 EhCache…

AD报错failed to add class member\net

什么原因导致的我到现在还没弄懂,总之解决方法是在PCB端删除所有现有的并且可删除的nets与components。下次问题复现了再补充截图(不想再遇到了球球了这种玄学问题)。 网络截图: 解决步骤:设计->类 把可删除的网络…

【论文翻译】HTVGNN:一种用于交通流量预测的混合时间变化图神经网络

题目A Novel Hybrid Time-Varying Graph Neural Network For Traffic Flow Forecasting论文链接https://arxiv.org/pdf/2401.10155v4关键词交通流预测,图神经网络,Transformer,多头自注意力 摘要 实时且精确的交通流量预测对于智能交通系统的…

OpenAI的Swarm是一个实验性质的多智能体编排框架

先上文档,然后解释,然后是代码 OpenAI的Swarm是一个实验性质的多智能体编排框架,旨在简化多智能体系统的构建、编排和部署。以下是对Swarm的详细介绍: 一、核心概念和特点 智能体(Agent): Swar…

目标检测——Libra R-CNN算法解读

论文:Libra R-CNN: Towards Balanced Learning for Object Detection (2019.4.4) 作者:Jiangmiao Pang, Kai Chen, Jianping Shi, Huajun Feng, Wanli Ouyang, Dahua Lin 链接:https://arxiv.org/abs/1904.02701 代码:https://git…

计算机毕业设计 基于Python的汽车销售管理系统的设计与实现 Python毕业设计 Python毕业设计选题【附源码+安装调试】

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…