14.8. Fonctions récursives

Comme pour les programmes shell, bash permet l’écriture de fonctions récursives.

Le programme fctfactr implante le calcul d’une factorielle sous la forme d’une fonction shell factr récursive. Outre la récursivité, ce programme illustre :

	#!/bin/bash
	#	@(#)	fctfactr

	shopt -s extglob

	if (( $# != 1 )) || [[ $1 != +([0-9]) ]]
	  then
	    echo "syntaxe : fctfactr n" >&2
	    exit 1
	fi


	function factr
	{	
        	local -i n

	if (( $1 == 0 ))
	  then  echo 1
	  else
	    (( n=$1-1 ))
	    n=$( factr $n )			#  appel recursif
	    echo $(( $1 * $n ))
	fi
	}


	factr  $1
$ fctfactr
syntaxe : fctfactr n
$ fctfactr euzte12uz
syntaxe : fctfactr n
$ fctfactr 1
1
$ fctfactr 4
24
$