0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

BASH shell脚本篇—条件命令

冬至子 来源:CSDN 作者:谷公子 2023-10-11 15:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

这篇文章介绍下BASH shell中的条件相关的命令,包括:if, case, while, until, for, break, continue。

1. If语句

if语句用于在顺序执行语句的流程中执行条件任务。If语句通常用于在Bash脚本中做出决定。它们根据可能设置的条件来决定是否运行一段代码。if语句的语法格式有几种,如下:

# 1. if语句基本格式:
# 注意:观察第一行中使用的空格,在第一行末尾使用分号。两者都必须使
#       用,if条件语句以fi结尾
if [ condition ];  
then  
statements  
fi
 
# 2. if-else语法格式:
if [ condition ];  
then  
   < if block commands >  
else  
   < else block commands >  
fi
 
 
# 3. else-if语法格式:
if [ condition ];  
then  
< commands >  
elif [ condition ];  
then  
< commands >  
else  
< commands >  
fi

if语句condition中可以包含一些操作符去处理更复杂的场景。以下是一些最常用的操作符:

image.png

2. case语句

Bash case语句是具有许多ELIF元素的IF-THEN-ELSE的最简单形式。使用case语句使bash脚本更具可读性,并且更易于维护。它通常用于简化具有多种不同选择的复杂条件。case语句的语法如下:

case expression in  
    pattern_1)  
        statements  
        ;;  
    pattern_2)  
        statements  
        ;;  
    pattern_3|pattern_4|pattern_5)  
        statements  
        ;;  
    pattern-n)  
        statements  
        ;;  
    *)  
        statements  
        ;;  
esac
# 包含语句的模式称为子句,并且必须以双分号(;;)终止
# 星号(*)用作定义默认情况的最终模式。当用作最后一种情况时,它用作默认情况

首先,case语句扩展表达式并尝试与每个包含的模式匹配。找到匹配项后,将执行所有链接的语句,直到双分号(;;)为止。在第一个匹配项之后,case以最后执行的语句的退出状态终止。
如果没有匹配的模式,则case的退出状态为零。

否则,返回状态是已执行语句的退出状态。如果使用默认的星号( * )模式,则在没有匹配模式的情况下将执行它。

3. for循环

bash shell脚本也支持for循环以执行重复性任务。它有助于在字符串中的一系列单词或数组中的元素上迭代一组特定的语句。例如,可以多次运行UNIX命令(或任务),也可以仅使用for循环读取和处理命令列表。

可以通过两种方式在bash脚本上应用for循环。一种方法是for-in,另一种方法是C语言语法。for循环的语法:

# 方法1,list可以包含数字或字符串等,以空格分隔
for variable in list  
do  
commands  
done
# 方法2
for (( expression1; expression2; expression3 ))  
do  
commands  
done

当bash的三个表达式中没有“开始,条件和增量”循环时,它将变为无限循环。要终止Bash中的无限循环,可以按Ctrl + C。

4. while循环

while循环可以定义为控制流语句,只要所应用的条件为真,该语句就允许重复执行给定的命令集。例如,可以运行多次echo命令,也可以仅逐行读取文本文件,然后使用Bash中的while循环处理结果。while循环格式:

while [ expressions ];  
do  
commands;  
multiple commands;  
done
# expressions可以是单条件或多条件

5. until循环

until循环用于根据表达式的布尔结果重复执行一组命令。仅在表达式的值为真之前执行命令集。因此当表达式的计算结果为false时,将迭代执行一组命令。当表达式首次为真时,循环终止。until循环与while循环相似,但是概念相反。until循环的语法格式:

until [ expressions ];  
do  
command1  
command2  
. . .  
. . .
commandN  
done

6. break和continue

可以在循环中使用break语句来终止循环。可以在循环中使用continue语句来跳过特定条件下的特定语句。它告诉Bash停止执行循环的特定迭代并处理下一个迭代。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    183

    文章

    7646

    浏览量

    146113
  • Shell
    +关注

    关注

    1

    文章

    375

    浏览量

    25481
  • for循环
    +关注

    关注

    0

    文章

    61

    浏览量

    2897
  • bash终端
    +关注

    关注

    0

    文章

    7

    浏览量

    2101
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Gemini CLI 中转站配置使用教程

    :访问 100 万 token 上下文窗口 ? 内置工具 :Google 搜索基础功能、文件操作、Shell 命令、网页抓取 ? 可扩展 :支持 MCP(模型上下文协议)进行自定义集成 ? 终端优先
    发表于 02-10 17:29

    Shell历史命令history用法

    1. 显示历史命令列表 「介绍」:history 命令用于显示当前会话中执行过的命令的列表,以及每个命令对应的编号。「示例代码」:history 2. 使用历史
    发表于 12-02 06:10

    【瑞萨RA6E2】1.使用串口shell点亮LED灯

    _TEXT_CMD_TOO_LONG, /**< 命令过长 */ SHELL_TEXT_CMD_LIST,/**< 可执行命令列表标题 */ SHELL_TEXT_VAR_
    发表于 11-09 17:26

    e203仿真报Syntax error: \"&amp;\"unexpected错误的原因

    “NO” 再试一下: ls -l /bin/sh 改成bash 再跑测试程序: 成功! 原因分析:dash和bash应该是shell脚本语言的两种解释方式,Ubuntu默认采用d
    发表于 11-05 13:39

    【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目-实现开机起动

    0接上文【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目 Linux 起动系统下 init 系统大多数 Linux 发行版
    发表于 11-03 17:25

    【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯按钮项目

    0接上文【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目-实现开机起动 EASYEAINano-TB(RV1126B)是一款专为
    发表于 11-03 10:00

    【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-灯闪

    )。 命令行功能测试 我准备在Ubuntu主板命令行启动后网络SSH 下用shell脚本进行控制部分硬件测试。从IO控制-灯闪开始。 EASY EAI Nano-TB可以基于Moba
    发表于 11-01 21:26

    关于系统链接脚本的介绍

    一、队伍介绍 本篇为蜂鸟E203系列分享第四篇,本篇介绍的内容是系统链接脚本。 二、如何实现不同的下载模式? 实现三种不同的程序运行方式,可通过makefile的命令行指定不同的链接
    发表于 10-30 08:26

    飞凌嵌入式ElfBoard-Linux系统基础入门-其它shell命令

    强制终止进程命令命令:kill功能:强制终止进程参数:-signal pid终止进程之前终止进110746程之后,kill -9表示无条件杀死该进程,杀死进程后终端窗口会关闭:elf@ubuntu
    发表于 10-11 08:42

    shell基本介绍及常用命令shell基本介绍

    提示符是“$”,在命令提示符后边输入命令即可和系统进行交互操作。ubuntu默认的ShellBash(Bourne Again Shell
    发表于 09-28 09:05

    termux输出Hello termux

    的 Python 语法 Python 脚本文件中只需包含纯 Python 代码,无需添加 `python` 命令或 HTML 标签(如 ``)。错误信息中的 `python` 导致解释器无法识别语法 。 2.
    发表于 08-29 12:16

    【创龙TL3562-MiniEVM开发板试用体验】--开发板外设与接口测试

    本篇讲述开发板使用shell命令进行驱动测试。 1.LED亮灭 开发板板载两颗用户LED,原理如下 下面输入脚本命令,可以控制LED1、LED2亮灭 (1)控制LED1亮echo 1
    发表于 07-27 16:27

    【RA-Eco-RA6M4开发板评测】移植shell实现命令交互

    /XLmbJn0SKoDT1aLdxHDrbg 一个超级精简高可移植的shell命令行C实现二. 移植移植参考上述文章,很简单只需要实现输入输出接口 即可。代码见shell.c/h shell
    发表于 07-19 22:47

    Shell脚本入门指南

    Shell 是一块包裹着系统核心的壳,处于操作系统的最外层,与用户直接对话,把用户的输入, 解释给操作系统,然后处理操作系统的输出结果,输出到屏幕给与用户看到结果。
    的头像 发表于 06-03 10:47 1365次阅读
    <b class='flag-5'>Shell</b><b class='flag-5'>脚本</b>入门指南

    【米尔-RK3562开发板试用评测】命令行功能测试-shell脚本进行IO控制-(绿色)RUN 灯、(红色)User灯

    shell脚本进行命令行功能测试 控制部分硬件测试。从IO控制-灯闪开始。 板手册中LED例: **应开发板上的 RUN 灯 为例进行LED灯测试 root@myd-yr3562:~# cd
    发表于 05-09 18:19