A linha 6 do seu script espera que os argumentos 1 a 5 existam. Se você executar seu script sem argumentos, $1+$2+$3+$4+$5
se tornará +++++
, o que explica a mensagem de erro. (Uma explicação semelhante é válida para a segunda mensagem de erro.) Talvez você deva verificar se 5 argumentos foram fornecidos e sair com uma mensagem de erro se este teste falhar, e. g .:
if [ $# != 5 ]
then
echo "Usage: scriptname num1 num2 num3 num4 num5"
exit 2
fi
Como alternativa, você pode fornecer um valor padrão para argumentos ausentes com Expansão do parâmetro do Bash . Na expressão a seguir, os primeiros 5 argumentos de linha de comando, ou 0 na ausência deles, são adicionados a uma soma:
$((${1-0} + ${2-0} + ${3-0} + ${4-0} + ${5-0}))
Observe que você também deve verificar se cada um dos 5 argumentos é numérico antes de tentar obter sua soma.