三元运算符和打印

三元运算符和打印

下面的命令有什么问题

awk 'BEGIN {a = 5;b=6; (a==b)? print "a==b" : print "a!=b"}'

输出 :

awk: BEGIN {a = 5;b=6; (a==b)? print "a==b" : print "a!=b"}
awk:                           ^ syntax error

答案1

与许多其他编程语言一样,awk区分表达式和语句。总的来说,语句是执行的操作,而表达式是产生值的计算。

中的三元运算符awk,就像其来源的 C 语言中的对应运算符一样,本身就是一个表达式(而不是语句),它期望其他三个表达式为expr1 ? expr2 : expr3print是一个声明。它不能在需要表达式的地方使用,因此会出现语法错误。

你有没有尝试过awk 'BEGIN {a = 5;b=6; print (a==b)? "a==b" : "a!=b"}'

使用需要表达式的语句没有任何意义。语句不返回值。那么当你有 时condition ? stmt1 : stmt2,三元运算符计算出的值是多少?如果condition为 false,它应该是 的值,stmt2但这不是一个值,而是一个操作。

相关内容