Shell编程-if和else

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

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

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

图片

运维小路

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

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

SHELL命令 -- if ... else ... 在使用任何一种编程语言时,使用条件语句都是让代码更加灵活的一条捷径。在SHELL命令中,ifelse…语句是这样用的。 1.单一条件 if [expression]; then command 1 command 2 ... fi 2.双条件 if [expression]; then command 1 command 2 ... else command 3 command 4 ... fi 3.多条件 if [expression]; then command 1 ... 阅读详情

相关推荐

linux shell嵌套if else,Linux Shell系列教程之(九)Shell判断 if else 用法

判断语句是每个语言都必不可少的关键语法,Shell命令当然也不例外。今天就给大家介绍下Shell判断语句 if else 用法。if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。Shell 有三种 if else格式:if … fi 格式ifelse … fi 格式if … elifelse … fi 格式下面我就分别就这几种格式来为大家详细介绍下。一、Shell判断语法之i...

weixin_42314192的博客 2553

Shell脚本if else fi判断语句应用

记录:431 场景:Shell脚本if else判断语句应用。一般格式:if then fi、if then else fi、if then elif then else fi、if then elif then elif then else fi。

zhangbeizhen18的博客 4787

Shell脚本-if else语句

Shell脚本-if else语句

小蜗牛的博客 1万+

shellifelse

基本语法 shellif语法C语言等高级语言非常相似,唯一需要注意的地方就是shellif语句对空格方面的要求比较严格(其实shell对所有语法的空格使用都比较严格),如果在需要空格的地方没有打上空格,都会报错。如if [ $1x == "ip"x ];then echo "abc";fi中少一个空格都会报错。另外shellif语句必须以fi作为结尾,不然同样会报错。 ...

weixin_30276935的博客 599

Shell编程——选择结构(if语句、if else语句、case in语句)

Shell 有三种 ifelse 语句,根据情况选用:(1)if … fi 语句(单个分支)(2)ifelse … fi 语句(两个分支)(3)if … elifelse … fi 语句(多个分支)

m0_45406092的博客 1198

Shell编程——选择结构(if else语句、case in语句)

以下内容源于C语言中文网的学习与整理,如有侵权,请告知删除。

主要记录嵌入式学习与开发过程。 9803

shell编程-if/else/fi分支语句

1.if/then/elif/else/fi 与C语言的类似,if (某个条件) 成立就执行 这后面 要加一个 then 可以理解成那么 elif => c语言中的 else if ()某个条件 fi 则是 结束 这个 if 语句的结束标志 因为 C语言中 一般都是 if(){ } 用 括号结束 但是 shell中则不是用括号结束 例如:(sample.sh 的作用如下) 如果sample.sh是一个文件 就执行这个文件 这里提醒一点 “[” 表示条件...

qq_44065088的博客 6501

shell编程 if else

文章目录exit0 exit1 的区别if else的用法if else的简化版本条件表示式linux中.sh文件是什么参考链接 exit0 exit1 的区别 exit(0):正常运行程序并退出程序; exit(1):非正常运行导致退出程序; exit 0 可以告知你的程序的使用者:你的程序是正常结束的。如果 exit 非 0 值,那么你的程序的使用者通常会认为你的程序产生了一个错误。 在 sh...

Be busy living or busy dying 351

linux shell编程if else,linux shell编程 if else 语句,case语句

if-else语句#ifelse2.sh#判断两个参数的大小#!/bin/bashif [ $1 -ge $2 ]thenecho "$1>=$2"elseecho "$1测试: 多重if-else语句shell中的else if 语句,简写成 elif#!/bin/bash#读入一个分数判断等级read -p "输入一个分数(0,100):" GREADif [ $GREAD -gt ...

weixin_33212575的博客 315

shell脚本编程-使用结构化命令(if/else)(转)

11.1 使用if-then语句 格式如下 if语句会执行if行定义的那个命令,如果该命令的退出状态码是0,则then部分的语句就会执行,其他值,则不会 1 2 3 4 if command then commands fi 在要执行的命令结尾加...

weixin_30432007的博客 115

linuxshell编程if-then-else结构

shell编程的判断语句与c编程的判断语句不同,if判断的是 命令的返回值,如果命令返回为0表示执行成功,则执行then后面的语句,如果返回的为非0值,则命令执行不成功,执行else后面的语句。如             if  test -f  /etc/passwd ; then                   echo "this file is existes"

酒徒词客 2157

linux shell编程 if else 语句,case语句

if-else语句 #ifelse2.sh #判断两个参数的大小 #!/bin/bash if [ $1 -ge $2 ]  then     echo "$1>=$2"  else     echo "$1<$2" fi 测试: 多重if-else语句 shell中的else if 语句,简写成 elif #!/bin/bash #读入一个分数判断等

小蓝的博客 1740

Linux - shell编程 if else,for循环,while,case语句

if else语句 双分支if命令: if 命令 --》当命令执行成功,就执行命令1,如果命令执行失败就执行命令2 then 命令1 else 命令2 fi ############################################################################ 单分支if命令 if 命令 --》如果命令执行成功,就执行命令1,否则不执行 then 命令1 fi 练习: .用户输入一个文件,我们去帮忙统计有多少行,输出给用户 如.

qq_48391148的博客 705

Shell编程if-elif-else条件分支语句测试

测试shell脚本编程时,写了如下代码:在对if-elif-else分支进行数值判断时, 发现一个奇怪的现象: 如果使用test conditon(即[ condition ])进行判定,当第一条if条件为假时, 无论代码中的elif语句条件是否为真, 都输出elif分支下的语句; 查看输出结果, 发现输出结果显然与期望值不一样为了能够得到预期结果, 发现如果采用双圆括号是进行判断, 可得到预期结...

Sardkit的博客 4944

shell脚本编程if-else条件判断

if判断 if 条件;then 动作1 fi 例:判断用户是否存在 [root@station mnt]# cat _if.sh #!/bin/bash user=student if grep $user /etc/passwd;then echo "Welcome $user" fi if date;then echo "hello date" fi if-e...

weixin_43314056的博客 644

shell编程基础-流程控制(if-else, 循环,定义函数)

1. if-else的判断格式 2. for/while循环的歌是 3. shell中函数的定义

晓魏 360

Shell脚本编程中的语句(if-else,while,for与case)

一.for循环: 格式如图: 练习1:简单的倒计时设置(十秒) 1.脚本内容如图: 2.执行脚本,从十秒倒数 练习2:格式正规的倒计时设置 1.脚本内容如图 2.执行脚本,输入分钟秒数,开始倒计时 二.while循环: 格式如图: 练习1:创建多个用户及修改密码 1.脚本内容如图: 2.执行脚本,ls /home查看用户是否创建成功 补充:删除多个用户的脚本为: 执行脚本,ls...

y_yang666的博客 530

shell编程---if语句

if语句 1、if..then..else...fi 1 #! /bin/bash 2 echo $PWD 3 #if judagement condition expression 4 if grep "shell" ./1.txt >/dev/null 5 #if grep "Shell" ./1.txt >/dev/null 6 then 7 ...

Andy的博客 473

如何在Shell脚本中使用if-else

Moving ahead from our previous tutorial on arrays in shell scripts, let’s understand how we can use if-else in shell scripts. 从上一章有关shell脚本中数组的教程开始,让我们了解如何在shell脚本中使用if-else。 Conditional programming ...

从零开始的教程世界 2891
上一篇: Shell编程-if判断
下一篇: Shell编程-while循环
dessler
博客等级 码龄20年 3056粉丝 434原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值