Using Functions: Parameters and Return Values
Problem
You want to use a function and you need to get some values into the function. How do you pass in parameters? How do you get values back?
Solution
You don’t put parentheses around the arguments like you might expect from some programming languages. Put any parameters for a bash function right after the function’s name, separated by whitespace, just like you were invoking any shell script or command. Don’t forget to quote them if necessary!
# define the function:
function max ()
{ ... }
#
# call the function:
#
max 128 $SIM
max $VAR $CNTYou have two ways to get values back from a function. You can
assign values to variables inside the body of your function. Those
variables will be global to the whole script unless they are explicitly
declared local within the
function:
# cookbook filename: func_max.1
# define the function:
function max ()
{
local HIDN
if [ $1 -gt $2 ]
then
BIGR=$1
else
BIGR=$2
fi
HIDN=5
}For example:
# call the function: max 128 $SIM # use the result: echo $BIGR
The other way is to use echo or printf to send output to standard output. Then you must invoke the function inside a $(), capturing the output and using the result, or it will be wasted on the screen:
# cookbook filename: func_max.2
# define the function:
function max ()
{
if [ $1 -gt $2 ]
then
echo $1
else
echo $2
fi
}For example:
# call the function: BIGR=$(max 128 $SIM) # use the result echo $BIGR
Discussion
Putting parameters on the invocation of the function ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access