답변:
다른 많은 프로그래밍 언어와 마찬가지로 awk
표현식과 명령문을 구별합니다. 전반적으로, 명령문은 수행되는 조치이며 표현식은 값을 산출하는 계산입니다.
의 삼항 연산자는 awk
C의 대응 연산자와 마찬가지로 세 가지 다른 식을 기대하는 식 (구문이 아님)입니다 expr1 ? expr2 : expr3
. print
진술입니다. 표현식이 호출되는 곳에서는 사용할 수 없으므로 구문 오류가 발생합니다.
시도 했습니까 awk 'BEGIN {a = 5;b=6; print (a==b)? "a==b" : "a!=b"}'
?
식이 필요한 문을 사용하는 것은 의미가 없습니다. 문은 값을 반환하지 않습니다. 그렇다면 condition ? stmt1 : stmt2
, 삼항 연산자로 계산 한 값은 무엇입니까? condition
False 인 경우 값이어야 stmt2
하지만 값이 아니라 동작입니다.
x = if true; print "yes"; else; print "no"; end
(cond1) ? printf("str1") : printf("str2")
. 삼항의 미묘함을 설명해 주셔서 감사합니다. 편집 : 사실, 다음과 같은 추악한 구조를 사용하여 : str = (cond1) ? sprintf("str1") : sprintf("str2"); printf("%s", str)
작업을하지만,이 시점에서 컴팩트 훨씬 더 명확이 경우 / 다른 :) 사용하는 거의