Há alguns problemas, acho
Primeiro, até onde eu sei, os argumentos da linha de comando não estão disponíveis como $1
e $2
dentro do bloco BEGIN
. No entanto, pelo menos no GNU awk, você pode acessá-los através do array ARGV
(embora eles precisem estar separados por espaços em branco e não separados por vírgula).
Em segundo lugar, a sintaxe para remover a referência de variáveis internas é apenas num1
não $num1
.
Então você poderia fazer
#!/usr/bin/awk -f
function add(num1,num2)
{
print num1 + num2
}
BEGIN {
add(ARGV[1],ARGV[2])
}
e depois chamá-lo como
$ ./add.awk 5 6
11
Se você realmente quiser usar ./add.awk 5,6
, precisará dividir ARGV[1]
em uma matriz internamente, por exemplo
#!/usr/bin/awk -f
function add(num1,num2)
{
print num1 + num2
}
BEGIN {
split(ARGV[1],a,",");
add(a[1],a[2])
}
$ ./add.awk 5,6
11