Language Translator

Hacking Zone

Hacking Tools
Attacking

Configure Windows

Windows Configuration

Novels

Mix Novels

Human Personality

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

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.



 
< Prev   Next >
Your Ad Here

Donate us!!

Enter Amount:

RSS socialnet

Add to MyYahoo!
Subscribe in NewsGator Online
Add to Newsburst
Add to Google
Add to My AOL
Add to Pluck
Subscribe in FeedLounge
Add to Windows Live
Add to NetVibes
Subscribe in Rojo
Subscribe in Bloglines
Add to MyMSN
Add to Plusmo for your cellphone
Add to PageFlakes
Add to Technorati
Add to BlinkBits