외부에서 정의된 변수의 값을 인쇄하고 싶습니다.앗파편.
코드 세그먼트
FailCounter=5
awk -v Fail=${FailCounter} -F, ' BEGIN {
print "<TABLE border=1>"
print "<TR><TD colspan=2> </font></TD></TR>"
} NR == 1 {
print "<TR><TH colspan=2 bgcolor=\\#FECACA><font face=verdana size=3 color=black>Failed Status Summary</font></TH></TR>"
print "<TR><TH bgcolor=\\#B7B1B1><font face=verdana size=3 color=black>" $1 "</font></TH>"
print "<TH bgcolor=\\#B7B1B1><font face=verdana size=3 color=black>" $2 "</font></TH></TR>"
} NR > 1 {
print "<TR><TD><font face=verdana size=3>" $1 "</font></TD>"
print "<TD><font face=verdana size=3>" $2 "</font></TD></TR>"
} END {
print "<TR><TD>Total</TD><TD>${FAIL}</TD></TR>"
print "</TABLE>"
} ' ${ScanOutage} >> ${OutputFile}
변수가 FailCounter
awk 블록 외부에 정의되어 있으며 -v Fail=${FailCounter}
스크립트의 awk 부분에 값을 쓸 수 없습니다. END
그냥 그대로 인쇄하면 됩니다.
이 문제를 해결하도록 도와주세요.
전류 출력
<TR><TD>Total</TD><TD>${FAIL}</TD></TR>
예상 출력
<TR><TD>Total</TD><TD>5</TD></TR>
답변1
그 중 awk
" $foo
변수라는 이름의 값"을 의미하는 것이 아니라 foo
, "변수 값으로 번호가 매겨진 필드 foo
"를 의미합니다. 변수를 참조하려면 를 사용하지 마세요 $
. 예를 들면 다음과 같습니다.
$ echo "aa bb cc" | awk -v field=3 '{ print "field number",field, "is:",$field }'
field number 3 is: cc
Fail
따라서 귀하의 경우에는 명령줄에서 정의한 awk 변수의 값을 인쇄할 print Fail
필요가 없습니다. $Fail
물론 ${FAIL}
변수를 호출하지 않기 때문에 필요하지 않습니다 FAIL
(대소문자를 구분함). 따라서 아마도 다음과 같은 것을 찾고 있을 것입니다.
END{
print "<TR><TD>Total</TD><TD>"Fail"</TD></TR>"
print "</TABLE>"
}
따옴표를 닫고 변수 이름을 사용한 다음 새 따옴표를 여는 방법을 확인하세요.