/ Linux Reviews / Beginners: Learn Linux / Advanced Bash-Scripting Guide - en
23.2. Local VariablesWhat makes a variable "local"?
23.2.1. Local variables help make recursion possible.Local variables permit recursion, [1] but this practice generally involves much computational overhead and is definitely not recommended in a shell script. [2] Example 23-13. Recursion, using a local variable #!/bin/bash
# factorial
# ---------
# Does bash permit recursion?
# Well, yes, but...
# It's so slow that you gotta have rocks in your head to try it.
MAX_ARG=5
E_WRONG_ARGS=65
E_RANGE_ERR=66
if [ -z "$1" ]
then
echo "Usage: `basename $0` number"
exit $E_WRONG_ARGS
fi
if [ "$1" -gt $MAX_ARG ]
then
echo "Out of range (5 is maximum)."
# Let's get real now.
# If you want greater range than this,
#+ rewrite it in a Real Programming Language.
exit $E_RANGE_ERR
fi
fact ()
{
local number=$1
# Variable "number" must be declared as local,
#+ otherwise this doesn't work.
if [ "$number" -eq 0 ]
then
factorial=1 # Factorial of 0 = 1.
else
let "decrnum = number - 1"
fact $decrnum # Recursive function call (the function calls itself).
let "factorial = $number * $?"
fi
return $factorial
}
fact $1
echo "Factorial of $1 is $?."
exit 0See also Example A-16 for an example of recursion in a script. Be aware that recursion is resource-intensive and executes slowly, and is therefore generally not appropriate to use in a script. Notes
/ Linux Reviews / Beginners: Learn Linux / Advanced Bash-Scripting Guide |
Meet new people Adult Dating | ||||||||||||