Shell编程-if和else

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

我们前面学习了那么多命令,以及涉及到部分逻辑判断的问题。从简单来说,他就是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进行配合使用。

图片

运维小路

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值