外部で定義された変数の値を印刷したいと思います。アッ破片。
コードセグメント
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>"
}
引用符を閉じて変数名を使用して、新しい引用符を開く方法を確認してください。