Shell Programming Functions
Shell Programming Functions
Command Substitution
Command substitution is the mechanism by which the shell performs a given set of commands and then substitutes
their output in the place of the commands.
Syntax
The command substitution is performed when a command is given as −
`command`
When performing the command substitution make sure that you use the backquote, not the single quote character.
Example
Command substitution is generally used to assign the output of a command to a variable. Each of the following
examples demonstrates the command substitution −
#!/bin/sh
DATE=`date`
USERS=`who | wc -l`
Variable Substitution
Variable substitution enables the shell programmer to manipulate the value of a variable based on its state.
1
${var}
2 ${var:-word}
If var is null or unset, word is substituted for var. The value of vardoes
not change.
3 ${var:=word}
4 ${var:?message}
5 ${var:+word}
If var is set, word is substituted for var. The value of var does not change.
Example
Following is the example to show various states of the above substitution −
#!/bin/sh
var="Prefix"
3 - Value of var is
This is default value
4 - Value of var is Prefix
Prefix
5 - Value of var is Prefix
Creating Functions
To declare a function, simply use the following syntax −
function_name () {
list of commands
}
The name of your function is function_name, and that's what you will use to call it from elsewhere in your scripts.
The function name must be followed by parentheses, followed by a list of commands enclosed within braces.
Example
Following example shows the use of function −
#!/bin/sh
Hello () {
Hello
Following is an example where we pass two parameters Zara and Ali and then we capture and print these
parameters in the function.
#!/bin/sh
Hello () {
If you instead want to just terminate execution of the function, then there is way to come out of a defined function.
Based on the situation you can return any value from your function using the return command whose syntax is as
follows −
return code
Here code can be anything you choose here, but obviously you should choose something that is meaningful or
useful in the context of your script as a whole.
Example
Following function returns a value 10 −
#!/bin/sh
Hello () {
return 10
}
# Invoke your function
ret=$?
Nested Functions
One of the more interesting features of functions is that they can call themselves and also other functions. A function
that calls itself is known as a recursive function.
#!/bin/sh
number_two
number_two () {
number_one
Alternatively, you can group the definitions in a file, say test.sh, and then execute the file in the current shell by
typing −
$. test.sh
This has the effect of causing functions defined inside test.sh to be read and defined to the current shell as follows
−
$ number_one
This is the first function speaking...
This is now the second function speaking...
$
To remove the definition of a function from the shell, use the unset command with the .f option. This command is
also used to remove the definition of a variable to the shell.
$ unset -f function_name