다음 명령의 문제점
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 : expr3
. print
진술이다. 표현식이 필요한 곳에는 사용할 수 없으므로 구문 오류가 발생합니다.
시도해 보셨나요 awk 'BEGIN {a = 5;b=6; print (a==b)? "a==b" : "a!=b"}'
?
표현식이 필요한 명령문을 사용하는 것은 의미가 없습니다. 명령문은 값을 반환하지 않습니다. 그러면 삼항 연산자가 를 가질 때 condition ? stmt1 : stmt2
계산하는 값은 무엇입니까 ? false 인 경우 condition
의 값이어야 하는데 stmt2
이는 값이 아니라 연산입니다.