Você está executando a função addition_example sem argumentos. Portanto, as variáveis $1 e $2 estão vazias e o que você está realmente executando é apenas result = $((+)) . Isso dá exatamente o erro que você mencionou:
$ result = $((+))
bash: +: syntax error: operand expected (error token is "+")
Quando você executar source script_name.sh 20 20 , o shell fornecerá script_name.sh , passando 20 e 20 como argumentos. No entanto, script_name.sh na verdade não contém nenhum comando, ele possui apenas uma declaração de função. Então os argumentos são ignorados. Em seguida, em um comando subseqüente, você executa addition_example , mas sem argumentos, para obter o erro descrito acima.
Além disso, você tem um erro de sintaxe. Você não pode ter espaços ao redor do operador de atribuição ( = ) em scripts de shell. Você deve alterar seu script para:
function addition_example(){
result=$(($1+$2))
echo "Addition of the supplied arguments = $result"
}
E, em seguida, execute a função com os argumentos desejados:
$ source script_name.sh; addition_example 20 20
Addition of the supplied arguments = 40