Vamos modificar um pouco seu script:
$ cat add.sh
#!/bin/bash
add() {
sum=0
for num
do
sum=$((sum +num))
done
}
add "$@"
echo "sum=$sum"
Agora, vamos executar o script:
$ bash add.sh 4 -3 9 12
sum=22
Funciona.
A única mudança é que chamamos sua função via add "$@"
antes de ecoar sum
.