Depois de algumas pesquisas, encontrei a resposta.
Primeiro, de acordo com este :
Expression Patterns
An expression pattern will be evaluated as if it were an expression in a
Boolean context. If the result is true, the pattern will be considered to
match, and the associated action (if any) will be executed. If the result is
false, the action will not be executed.
Portanto, no meu exemplo, $NF=a[FNR]
será considerado como um padrão de expressão. Como o documento disse, o resultado da atribuição é avaliado como true
ou false
.
No meu exemplo, o resultado da atribuição é 0
, que é avaliado como false
no contexto booleano, fazendo com que o padrão seja considerado como não correspondido, nenhuma ação seja executada.
Nota para @Michael Homer
Este é um exemplo para mostrar que The assignment to m returned the value assigned.
in awk
está incorreto.
$ awk 'function test() {a=2} BEGIN{print test()}'
<blank line>
$ perl -e 'sub test {$a=2}; print test'
2
Você pode ver qual atribuição retorna em awk
example?
awk 'n=(m=5);END{print n}' prints 5
devido a efeito colateral , não significa awk
valor de retorno da atribuição.