Problème de PATH. Tu as probablement dû modifier ton PATH en rajoutant ":." pour que les scripts locaux soient appelables directement par leur nom mais en oubliant de l'exporter.
Donc quand tu lances ton script en appelant "rec_fact", il génère un processus dans lequel le PATH ne contient pas ":.". Total, quand le processus appelle $0 (à savoir "rec_fact"), le système répond "commande non trouvée".
Solution 1: appeler ton script en y incluant son chemin => ./rec_fact => il incluera ce chemin dans les appels récursifs
Solution 2: exporter le PATH => tous les processus fils auront le même PATH
Et si tu as envie de briller, tu peux montrer ce script qui a l'avantage de calculer la factorielle sans récursivité et sans boucle
le script fonctionne correctement maintenant
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #!/bin/sh
if test $# -lt 1
then
echo erreur
exit 1
fi
nb=${nb:-$1}
res=`expr ${res:-1} \* $nb`
nb=`expr $nb - 1`
if test $nb -le 1
then
test $res -ne 0 && echo $res || echo 1
exit 0
fi
source $0 |
Partager