Você está chamando exit
de BEGIN{}
, isso significa que qualquer coisa que não esteja em um BEGIN{}
ou END{}
anterior não será executada.
Mesmo sem a saída, seu código
{ pkginfo("test") }
não será executado até que uma linha de entrada (stdin) esteja disponível, é assim que o awk funciona. Você poderia contornar isso chamando uma função com seu código ( main()
, por exemplo) com seu código e, em seguida, exit
no final do último bloco BEGIN
.
awk
é um propósito bastante geral, mas realmente quer ler linhas de entrada e combiná-las com padrões. É por isso que seu código parece travar,.
Ou você pode usar
BEGIN { pkginfo("test") }
embora você possa precisar entender a ordem de todos os blocos BEGIN
. Ou, se você chamar exit
no final do% finalBEGIN
, poderá colocar seu código em um bloco END{}
. Nenhuma entrada será esperada se você tiver apenas BEGIN
/ END
blocks.
Como você está rodando em um sistema Linux, é bem provável que esteja usando gawk
em vez de um awk
( nawk
, mawk
ou similar), quase certamente porque -e
também é gawk
versão 4 extensão ;-)
Nesse caso, você pode usar @include
, o que elimina algum código. Caso contrário, para qualquer outro awk thes script wrapper igawk
parece um caminho mais limpo para realizar incluem capacidade.