www.Tutorialsforu.info

Free Tutorials Cave

  • Increase font size
  • Default font size
  • Decrease font size
Your Ad Here



Functions in Shell Scripting

E-mail Print
Article Index
Functions in Shell Scripting
Page 2
Page 3
Page 4
Page 5
Page 6
Page 7
Page 8
All Pages

Functions in Shell Scripting

 

Table of Contents
1. Complex Functions and Function Complexities
2. Local Variables
3. Recursion Without Local Variables

Like "real" programming languages, Bash has functions, though in a somewhat limited implementation. A function is a subroutine, a code block that implements a set of operations, a "black box" that performs a specified task. Wherever there is repetitive code, when a task repeats with only slight variations in procedure, then consider using a function.

 

function function_name {
command...
}

or

function_name () {
command...
}

This second form will cheer the hearts of C programmers (and is more portable).

As in C, the function's opening bracket may optionally appear on the second line.

function_name ()
{
command...
}

Note

A function may be "compacted" into a single line.

fun () { echo "This is a function"; echo; }
# ^ ^

In this case, however, a semicolon must follow the final command in the function.

fun () { echo "This is a function"; echo } # Error!
# ^

Functions are called, triggered, simply by invoking their names. A function call is equivalent to a command.

Example 23-1. Simple functions

#!/bin/bash

JUST_A_SECOND=1

funky ()
{ # This is about as simple as functions get.
echo "This is a funky function."
echo "Now exiting funky function."
} # Function declaration must precede call.


fun ()
{ # A somewhat more complex function.
i=0
REPEATS=30

echo
echo "And now the fun really begins."
echo

sleep $JUST_A_SECOND # Hey, wait a second!
while [ $i -lt $REPEATS ]
do
echo "----------FUNCTIONS---------->"
echo "<------------ARE-------------"
echo "<------------FUN------------>"
echo
let "i+=1"
done
}

# Now, call the functions.

funky
fun

exit 0

The function definition must precede the first call to it. There is no method of "declaring" the function, as, for example, in C.

f1
# Will give an error message, since function "f1" not yet defined.

declare -f f1 # This doesn't help either.
f1 # Still an error message.

# However...


f1 ()
{
echo "Calling function \"f2\" from within function \"f1\"."
f2
}

f2 ()
{
echo "Function \"f2\"."
}

f1 # Function "f2" is not actually called until this point,
#+ although it is referenced before its definition.
# This is permissible.

# Thanks, S.C.

It is even possible to nest a function within another function, although this is not very useful.

f1 ()
{

f2 () # nested
{
echo "Function \"f2\", inside \"f1\"."
}

}

f2 # Gives an error message.
# Even a preceding "declare -f f2" wouldn't help.

echo

f1 # Does nothing, since calling "f1" does not automatically call "f2".
f2 # Now, it's all right to call "f2",
#+ since its definition has been made visible by calling "f1".

# Thanks, S.C.



 

Subscribe By Email

Enter your email address:

Delivered by FeedBurner

Translate

Donate

Development & maintainance needs time & money.
With your donation you can help us to keep this project alive
Donate:
  Monthly Monthly
Currency
Amount