삼항 연산자 및 인쇄

삼항 연산자 및 인쇄

다음 명령의 문제점

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이는 값이 아니라 연산입니다.

관련 정보