Solution: 0 Noter la redirection de la sortie normale sur le flux d'erreur, la suppression du signe + superflu d'au moins deux manières (trouvez-en encore une utilisant, par exemple, les possibilités de filtrage de la commande expr), le filtrage avec choix. Noter que l'expression [0-9]* ne filtre, pour sh, que les mots qui commencent par un chiffre et non les mots qui ne seraient composés que de chiffres.
()
#! /bin/sh

RESULT=0

for word in "$@"
do
    case X$word in
    X[0-9]*|X-[0-9]*)
        RESULT=`expr $RESULT + $word`
        ;;
    X+[0-9]*)
        #word=`IFS="+$IFS" ;  export IFS ;  eval echo "$word"`
        word=`echo $word | sed -e s/+//`
        RESULT=`expr $RESULT + $word`
        ;;
    esac
done

echo $RESULT 1>&2

# end of somme.sh
L'interprète de commande csh possède une arithmétique prédéfinie donc plus performante que l'appel à expr.