LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1090|回复: 3

请教关于花括号{}在以下语句的作用?

[复制链接]
发表于 2008-1-22 01:13:36 | 显示全部楼层 |阅读模式
请教关于花括号{}在以下语句的作用?知道的来帮帮我啊!谢过各位啦!

问题一.是否只要是“动作”就一定得用花括号{}括起来?
问题二.在if语句前为什么要加花括号{},它又不是“动作”?
下面两条语句哪句是正确的,还是两句都对?
awk '{if ($4=="yellow" || $4~/brown/) print $0 }' file
awk '{if ($4=="yellow" || $4~/brown/) {print $0}}' file

问题三.以下条件语句为什么要用花括号{}括起来?
awk '{max={$1 > $2} ? $1 : $2 : print max}' file
发表于 2008-1-22 11:19:56 | 显示全部楼层
awk '{max={$1 > $2} ? $1 : $2 : print max}' file
正确的写法是
awk '{max=($1>$2)?$12;print max}' file
$2后面是分号
( )?: 是三目运算符,( )中的是条件表达式,条件为真时,取:左边的值,条件为假时,取:右边的值。
;在awk中,用来分隔每个动作(或者说语句)。
最外层的{}表示动作组合。

如果if后面只有一个动作,可以不用{}包含起来。
即 if(???) print $0 与 if(???){print $0} 是等价的
在awk中,print 与 print $0是等价的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-22 11:36:01 | 显示全部楼层
请问最外层的{}表示动作组合是必须的吗?可否省略而写成如下等价语句:
awk 'if ($4=="yellow" || $4~/brown/)print $0' file
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-24 00:04:02 | 显示全部楼层
等价语句应该为:
awk '$4=="yellow"||$4~/brown/'

问题解决了,2楼的解答!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表