下面的命令有什么问题
awk 'BEGIN {a = 5;b=6; (a==b)? print "a==b" : print "a!=b"}'
Run Code Online (Sandbox Code Playgroud)
输出 :
awk: BEGIN {a = 5;b=6; (a==b)? print "a==b" : print "a!=b"}
awk: ^ syntax error
Run Code Online (Sandbox Code Playgroud)
Cel*_*ada 27
像许多其他编程语言一样,awk
区分表达式和语句。总的来说,语句是执行的操作,而表达式是产生值的计算。
三元运算符 in awk
,就像它在 C 中的对应物一样,它本身就是一个表达式(不是语句),它期望三个其他表达式为expr1 ? expr2 : expr3
。print
是一个声明。它不能用于需要表达式的地方,因此会出现语法错误。
你试过awk 'BEGIN {a = 5;b=6; print (a==b)? "a==b" : "a!=b"}'
吗?
在需要表达式的地方使用语句没有任何意义。语句不返回值。那么当你有 时condition ? stmt1 : stmt2
,三元运算符计算出的值是多少?如果condition
是假,它应该是值,stmt2
但那不是一个值,它是一个动作。
归档时间: |
|
查看次数: |
11582 次 |
最近记录: |