Bash Shell Script Function Examples

by on January 27, 2009 · 3 comments· last updated at October 27, 2009

How do I create a shell script function using Bash under UNIX / Linux operating systems?

Functions are nothing but small subroutines or subscripts within a Bash shell script. You need touse to break up a complex script into separate tasks. This improves overall script readability and ease of use. However, shell function cannot return value. They return a status code.

Declare Shell Function

All functions must be declared before they can be used. The syntax is:

function name(){
  Commands
}

OR

 
name(){
 Commands
 return $TRUE
}

You can call function by typing its name:

 
name

Example

Create a shell script called file.sh:

#!/bin/bash
# file.sh: a sample shell script to demonstrate the concept of Bash shell functions
# define usage function
usage(){
	echo "Usage: $0 filename"
	exit 1
}
 
# define is_file_exits function 
# $f -> store argument passed to the script
is_file_exits(){
	local f="$1"
	[[ -f "$f" ]] && return 0 || return 1
}
# invoke  usage
# call usage() function if filename not supplied
[[ $# -eq 0 ]] && usage
 
# Invoke is_file_exits
if ( is_file_exits "$1" )
then
 echo "File found"
else
 echo "File not found"
fi
 

Run it as follows:
chmod +x file.sh
./file.sh
./file.sh /etc/resolv.conf

Task: Export functions

You need to use export command:

 
fname(){
  echo "Foo"
}
 
export -f fname

Task: Make readonly functions

You create functions at the top of the script and set the readonly attribute with the readonly command:

 
fname(){
  echo "Foo"
}
 
usage(){
  echo "Usage: $0 foo bar"
  exit 1
}
 
readonly -f usage
readonly -f fname

Task: Local variables functions

Use the local command to create local variables:

#!/bin/bash
# gloabal x and y
x=200
y=100
 
math(){
  # local variable x and y with passed args	
  local x=$1
  local y=$2
  echo $(( $x + $y ))
}
 
echo "x: $x and y: $y"
# call function 
 
echo "Calling math() with x: $x and y: $y"
math 5 10
 
# x and y are not modified by math()
echo "x: $x and y: $y after calling math()"
echo $(( $x + $y ))

Task: Recursion

A recursive function call itself. Recursion is a useful technique for simplifying some complex algorithms, and breaking down complex problems.

 
#!/bin/bash
foo(){
  # do something
  # if not false call foo
  foo
}
 
# call foo
foo

See Recursive function for more details.

Recommend readings:



You should follow me on twitter here or grab rss feed to keep track of new changes.

Featured Articles:

{ 3 comments… read them below or add one }

1 shweta October 26, 2012 at 7:34 am
fun1(){ x=100000;  echo " In fun() x = $x " ; }
fun2(){ y=200000;  echo " In fun() y = $y " ; }
x=100 ; y=200
echo "before calling d fun1() x=$x"
echo -e $(fun1)
echo " after calling d fun1() x=$x"
echo "before calling d fun2() y=$y"
fun2
echo " after calling d fun() y=$y"

output :

before calling d fun1() x=100
In fun() x = 100000
 after calling d fun1() x=100
before calling d fun2() y=200
 In fun() y = 200000
 after calling d fun() y=200000

I m a beginner in Shell programing…., anybody can explain me what is the diff. b/w calling a function as $(fun) or fun….., why the value of x is not changed n value of is changed… what is diff. b/w both invocation.

Reply

2 Newbie March 3, 2013 at 12:19 am

Hi,

Thanks sir, this is explicated in detail and simply, you learn me function with bash :)

Have a good time

Reply

3 Jordan May 3, 2013 at 2:59 pm

Thanks!
So helpfull as usually…

Reply

Leave a Comment

You can use these HTML tags and attributes for your code and commands: <strong> <em> <ol> <li> <u> <ul> <kbd> <blockquote> <pre> <a href="" title="">

Tagged as: , , , , , , , , , , , , , , ,

Previous Faq:

Next Faq: