首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Shell编程-if和else

Shell编程-if和else

作者头像
运维小路
发布2024-11-01 19:48:05
发布2024-11-01 19:48:05
2890
举报
文章被收录于专栏:运维小路运维小路

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们前面学习了那么多命令,以及涉及到部分逻辑判断的问题。从简单来说,他就是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 语句加上失败的基本结构如下:

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

if 语句的用法解析:

  1. 条件部分
    • condition 是一个用于测试真假的表达式或命令。在 if 语句中,condition 会被解释为一个命令,其退出状态码(0 表示真,非0 表示假)决定了 if 语句执行哪个分支。
  2. thenelse 部分
    • then 关键字标志着条件为真时执行的命令或代码块的开始。
    • else 部分是可选的,用于指定条件为假时要执行的命令或代码块。
  3. fi 结束符
    • fiif 语句的结束标志,表示条件判断结束。

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

示例:

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

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

多个条件判断:

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

代码语言:javascript
复制
#!/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

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

真实案例

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

代码语言:javascript
复制
#!/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进行配合使用。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 示例:
  • 多个条件判断:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档