第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
的语句体就会执行,直到遇到 break
、continue
、next
、nextfile
或 exit
语句,或者执行到 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.