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