当前位置: 首页 > news >正文

第7.5节:awk语言 switch 语句

1 第7.5节:awk语言 switch 语句

本节介绍的是 gawk 特有的功能。如果 gawk 处于兼容模式,该功能不可用。

switch 语句允许对一个表达式进行求值,并根据匹配的 case(分支 )来执行相应的语句。case 语句会按照定义的顺序检查匹配情况。如果找不到合适的 case,若有 default(默认 )部分,则执行 default 部分的语句。

每个 case 包含一个单独的常量,这个常量可以是数值、字符串或正则表达式。先对 switch 表达式求值,然后依次将每个 case 的常量与求值结果进行比较。常量的类型决定了比较方式:数值或字符串按常规方式比较;正则表达式常量(常规的 /foo/ 或强类型的 @/foo/ )会针对原始表达式的字符串值进行正则表达式匹配。switch 语句的一般形式如下:

switch (expression) {
case value or regular expression:case-body
default:default-body
}

switch 语句中的控制流与 C 语言中的 switch 类似。一旦匹配到某个 case,该 case 的语句体就会执行,直到遇到 breakcontinuenextnextfileexit 语句,或者执行到 switch 语句本身的末尾。例如:

while ((c = getopt(ARGC, ARGV, "aksx")) != -1) {switch (c) {case "a":# 报告所有文件的大小all_files = TRUE;breakcase "k":BLOCK_SIZE = 1024       # 1K 块大小breakcase "s":# 仅求和sum_only = TRUEbreakcase "x":# 不跨越文件系统fts_flags = or(fts_flags, FTS_XDEV)breakcase "?":default:usage()break}
}

需要注意的是,如果匹配的 case 语句中没有任何语句能终止执行,程序会继续执行下一个 case,直到执行终止。在此示例中,case "?" 会继续执行 default case,即调用一个名为 usage() 的函数。


作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来自AI平台,如:豆包、DeepSeek(硅基流动)(注册链接)等,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.

http://www.dtcms.com/a/358945.html

相关文章:

  • 【C++】掌握string类操作:高效处理字符串
  • k230 按键拍照后,将摄像头拍照的1920*1080分辨率的图片以jpg文件格式,保存到板载TF存储卡的指定文件夹目录中
  • MinerU本地化部署
  • Java的Optional实现优雅判空新体验【最佳实践】
  • 做一个实用的节假日工具
  • MQTT 连接建立与断开流程详解(一)
  • sunset: decoy靶场渗透
  • 20250830_Oracle 19c CDB+PDB(QMS)默认表空间、临时表空间、归档日志、闪回恢复区巡检手册
  • day42-Ansible
  • 动态规划--Day05--最大子数组和--53. 最大子数组和,2606. 找到最大开销的子字符串,1749. 任意子数组和的绝对值的最大值
  • 微信小程序开发教程(三)
  • java如何保证线程安全
  • RLPD——利用离线数据实现高效的在线RL:不进行离线RL预训练,直接应用离策略方法SAC,在线学习时对称采样离线数据
  • 【OpenGL】LearnOpenGL学习笔记17 - Cubemap、Skybox、环境映射(反射、折射)
  • 【pandas】.loc常用操作
  • 【SpringMVC】SSM框架【二】——SpringMVC超详细
  • 【运维篇第三弹】《万字带图详解分库分表》从概念到Mycat中间件使用再到Mycat分片规则,详解分库分表,有使用案例
  • DAEDAL:动态调整生成长度,让大语言模型推理效率提升30%的新方法
  • 基于SpringBoot的电脑商城系统【2026最新】
  • 漫谈《数字图像处理》之分水岭分割
  • SystemVerilog学习【七】包(Package)详解
  • REST-assured获取响应数据详解
  • 数据结构 | 深度解析二叉树的基本原理
  • 访问Nginx 前端页面,接口报502 Bad Gateway
  • 【DeepSeek】ubuntu安装deepseek、docker、ragflow
  • 简历书写---自我评价怎么写
  • Day18_【机器学习—交叉验证与网格搜索】
  • Unity核心概念①
  • 【Linux】基础I/O和文件系统
  • PHP单独使用phinx使用数据库迁移