A mensagem de erro reclama de um do inesperado porque você usou errado: do é uma palavra reservada usada em for , case , while e until loops. Como o comentário anterior termina com for i in $* , presumo que você acabou de esquecer de adicionar uma quebra de linha:
# now calculate the average of the numbers given on command line as cmd args
for i in $*
do
# addition of all the numbers on cmd args
temp_total='expr $temp_total + $1 '
done
man bash / SHELL GRAMMAR / Comandos compostos explica como criar for e outros loops. Se você quiser simplesmente fazer um loop em todos os argumentos bash também suporta um formato abreviado, vou combiná-lo com bash Arithmetic Expansão aqui:
# now calculate the average of the numbers given on command line as cmd args
for i
do
# addition of all the numbers on cmd args
temp_total=$((temp_total+i))
done