免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1924 | 回复: 1
打印 上一主题 下一主题

AWK 控制语句(if for do while) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-12 22:43 |只看该作者 |倒序浏览

AWK 控制语句(if for do while)










在linux awk的 while、do-while和for语句中允许使用break,continue语句来控制流程走向,也允许使用exit这样的语句来退出。break中断当前正在执行的循环并跳到循环外执行下一条语句。if 是流程选择用法。 awk中,流程控制语句,语法结构,与c语言类型。下面是各个语句用法。



一.条件判断语句(if)


if(表达式) #if ( Variable in Array )
语句1
else
语句2

格式中"语句1"可以是多个语句,如果你为了方便Unix awk判断也方便你自已阅读,你最好将多个语句用{}括起来。Unix awk分枝结构允许嵌套,其格式为:
  1. if(表达式)

  2. {语句1}

  3. else if(表达式)
  4. {语句2}
  5. else
  6. {语句3}

  7. [gao@localhost nginx]# awk 'BEGIN{
  8. test=100;
  9. if(test>90)
  10. {
  11.      print "very good";
  12. }
  13. else if(test>60)
  14. {
  15.      print "good";
  16. }
  17. else
  18. {
  19.      print "no pass";
  20. }
  21. }'

  22. very good
复制代码
每条命令语句后面可以用“;”号结尾。



二.循环语句(while,for,do)


1.while语句

格式:

while(表达式)

{语句}


例子:
  1. [gao@localhost nginx]# awk 'BEGIN{
  2. test=100;
  3. total=0;
  4. while(i<=test)
  5. {
  6.      total+=i;
  7.      i++;
  8. }
  9. print total;
  10. }'
  11. 5050
复制代码
2.for 循环

for循环有两种格式:

格式1:

for(变量 in 数组)

{语句}

例子:
  1. [gao@localhost nginx]# awk 'BEGIN{
  2. for(k in ENVIRON)
  3. {
  4.      print k"="ENVIRON[k];
  5. }
  6. }'

  7. AWKPATH=.:/usr/share/awk
  8. OLDPWD=/home/web97
  9. SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
  10. SELINUX_LEVEL_REQUESTED=
  11. SELINUX_ROLE_REQUESTED=
  12. LANG=zh_CN.GB2312
复制代码
。。。。。。

说明:ENVIRON 是awk常量,是子典型数组。

格式2:

for(变量;条件;表达式)

{语句}

例子:
  1. [gao@localhost nginx]# awk 'BEGIN{
  2. total=0;
  3. for(i=0;i<=100;i++)
  4. {
  5.      total+=i;
  6. }
  7. print total;
  8. }'

  9. 5050
复制代码
3.do循环

格式:

do

{语句}while(条件)

例子:
  1. [gao@localhost nginx]# awk 'BEGIN{
  2. total=0;
  3. i=0;
  4. do
  5. {
  6.      total+=i;
  7.      i++;
  8. }while(i<=100)
  9. print total;
  10. }'
  11. 5050
复制代码
以上为awk流程控制语句,从语法上面大家可以看到,与c语言是一样的。有了这些语句,其实很多shell程序都可以交给awk,而且性能是非常快的。





break

当 break 语句用于 while 或 for 语句时,导致退出程序循环。



continue

当 continue 语句用于 while 或 for 语句时,使程序循环移动到下一个迭代。



next

能能够导致读入下一个输入行,并返回到脚本的顶部。这可以避免对当前输入行执行其他的操作过程。



exit

语句使主输入循环退出并将控制转移到END,如果END存在的话。如果没有定义END规则,或在END中应用exit语句,则终止脚本的执行。

论坛徽章:
0
2 [报告]
发表于 2012-03-12 22:44 |只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP