Existem 2 problemas no seu script
- a variável
z
não foi inicializada - o teste
if(out_ar)
no segundo trecho de código não é adequado para matrizes
Para resolver o primeiro problema, você precisa atribuir um elemento de matriz (como z[1]=1
), pois não há uma declaração de matriz no awk. (Você não pode usar uma declaração semelhante como declare -A
como faria no bash).
O segundo problema pode ser resolvido, desde que você esteja usando o GNU awk, com a função isarray()
ou typeof()
.
Assim, seu código deve ficar assim:
function add_one(in_ar, out_ar, each) {
if (isarray(out_ar)) {
for (each in in_ar) {
out_ar[each] = in_ar[each] + 1
}
}
else {
for (each in in_ar) {
in_ar[each]++
}
}
}
BEGIN {
split("1 2 3 4 5", q)
z[1]=1
add_one(q, z)
print z[3]
}
Recomendo ver esta página e esta página .