时间:2020-02-29来源:电脑系统城作者:电脑系统城
注:awk中语句块没有作用域,都是全局变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
if (condition) statement [ else statement ] expr1?expr2:expr3 while (condition) statement do statement while (condition) for (expr1; expr2; expr3) statement for (var in array) statement break continue next nextfile exit [ expression ] { statements } switch (expression) { case value|regex : statement ... [ default: statement ] }
{statement}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
# 单独的if if(cond){ statements } # if...else if(cond1){ statements1 } else { statements2 } # if...else if...else if(cond1){ statements1 } else if(cond2){ statements2 } else if(cond3){ statements3 } else{ statements4 }
搞笑题:妻子告诉程序员老公,去买一斤包子,如果看见卖西瓜的,就买两个。结果是买了两个包子回来。
1 2 3 4 5 6 7 8 9 10 11 12
# 自然语言的语义 买一斤包子 if(有西瓜){ 买两个西瓜 } # 程序员理解的语义 if(没有西瓜){ 买一斤包子 }else{ 买两个包子 }
1 2 3 4 5 6 7 8 9 10 11 12 13 14
awk ' BEGIN{ mark = 999 if (mark >=0 && mark < 60) { print "学渣" } else if (mark >= 60 && mark < 90) { print "还不错" } else if (mark >= 90 && mark <= 100) { print "学霸" } else { print "错误分数" } } '
1 2 3 4 5 6 7
expr1 ? expr2 : expr3 if(expr1){ expr2 } else { expr3 }
1 2
awk 'BEGIN{a=50;b=(a>60) ? "及格" : "不及格";print(b)}' awk 'BEGIN{a=50; a>60 ? b="及格" : b="不及格";print(b)}'
1 2 3 4 5 6 7
switch (expression) { case value1|regex1 : statements1 case value2|regex2 : statements2 case value3|regex3 : statements3 ... [ default: statement ] }
awk 中的switch分支语句功能较弱,只能进行等值比较或正则匹配。
各分支结尾需使用break来终止。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
{ switch($1){ case 1: print("Monday") break case 2: print("Tuesday") break case 3: print("Wednesday") break case 4: print("Thursday") break case 5: print("Friday") break case 6: print("Saturday") break case 7: print("Sunday") break default: print("What day?") break } }
分支穿透:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
{ switch($1){ case 1: case 2: case 3: case 4: case 5: print("Weekday") break case 6: case 7: print("Weekend") break default: print("What day?") break } }
1 2 3 4 5 6 7
while(condition){ statements } do { statements } while(condition)
while先判断条件再决定是否执行statements,do...while先执行statements再判断条件决定下次是否再执行statements。
1 2
awk 'BEGIN{i=0;while(i<5){print i;i++}}' awk 'BEGIN{i=0;do {print i;i++} while(i<5)}'
多数时候,while和do...while是等价的,但如果第一次条件判断失败,则do...while和while不同。
1 2
awk 'BEGIN{i=0;while(i == 2){print i;i++}}' awk 'BEGIN{i=0;do {print i;i++} while(i ==2 )}'
所以,while可能一次也不会执行,do...while至少会执行一次。
一般用while,do...while相比while来说,用的频率非常低。
1 2 3 4 5 6 7
for (expr1; expr2; expr3) { statement } for (idx in array) { statement }
2024-07-18
Centos 7 二进制安装配置 MariaDB数据库2024-07-18
Centos7默认firewalld防火墙使用命令大全2024-07-07
四种执行python系统命令的方法常用权限linux系统内有档案有三种身份 u:拥有者 g:群组 o:其他人这些身份对于文档常用的有下面权限:r:读权限,用户可以读取文档的内容,如用cat,more查看w:写权限,用户可以编辑文档x...
2024-07-07
然而,如果我们遵循通常的 WordPress 最佳实践,这些安全问题可以避免。在本篇中,我们会向你展示如何使用 WPSeku,一个 Linux 中的 WordPress 漏洞扫描器,它可以被用来找出你安装...
2024-07-03