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.