Por que POSIX deixou '$ (expression)' em awk não especificado?

2

Respondendo a essa pergunta , descobri que:

echo 1 2 | awk '{print $(expression)}'

o valor de retorno de expressão não é especificado. Isso pode causar confusão, como se expressão fosse uma variável não inicializada, devesse $(expression) return 0 (conforme avaliado no contexto numérico) ou retornasse a string vazia "" (conforme avaliado no contexto da string) ou gerar um erro.

Desde quando as variáveis de campo foram definidas como:

Field variables shall be designated by a '$' followed by a number or numerical expression

Por que POSIX deixou o valor de retorno de qualquer expressão segue $ não especificado? É uma razão histórica ou algo mais?

    
por cuonglm 06.01.2016 / 10:31

1 resposta

2

O POSIX se esforçou para codificar a prática existente, e apenas abriu novos caminhos onde inevitável (sim, isso é o padrão pós-fato para você ;-). Como o código Unix nunca foi exatamente o epítome da consistência (por exemplo, o vi original (1) retornou um código de saída completamente aleatório, presumivelmente para raspar alguns bytes do executável quando isso era crítico), interpretado literalmente por centenas de grupos diferentes. modificados de acordo com diferentes agendas, clones gerados (como o GNU, havia vários outros), muito foi deixado indefinido para abranger todo o tipo de comportamento aleatório.

    
por 06.01.2016 / 13:28

Tags