삼항 연산자 및 인쇄 print “a!=b”}’ 출력 : awk: BEGIN {a

아래 명령에 어떤 문제가 있습니까?

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



답변

다른 많은 프로그래밍 언어와 마찬가지로 awk표현식과 명령문을 구별합니다. 전반적으로, 명령문은 수행되는 조치이며 표현식은 값을 산출하는 계산입니다.

의 삼항 연산자는 awkC의 대응 연산자와 마찬가지로 세 가지 다른 식을 기대하는 식 (구문이 아님)입니다 expr1 ? expr2 : expr3. print진술입니다. 표현식이 호출되는 곳에서는 사용할 수 없으므로 구문 오류가 발생합니다.

시도 했습니까 awk 'BEGIN {a = 5;b=6; print (a==b)? "a==b" : "a!=b"}'?

식이 필요한 문을 사용하는 것은 의미가 없습니다. 문은 값을 반환하지 않습니다. 그렇다면 condition ? stmt1 : stmt2, 삼항 연산자로 계산 한 값은 무엇입니까? conditionFalse 인 경우 값이어야 stmt2하지만 값이 아니라 동작입니다.


답변