Bash Shell Script Function Examples

by on January 27, 2009 · 6 comments· LAST UPDATED October 27, 2009

in , ,

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(){


 return $TRUE

You can call function by typing its name:



Create a shell script called

# a sample shell script to demonstrate the concept of Bash shell functions
# define usage function
	echo "Usage: $0 filename"
	exit 1
# define is_file_exits function 
# $f -> store argument passed to the script
	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" )
 echo "File found"
 echo "File not found"

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

Task: Export functions

You need to use export command:

  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:

  echo "Foo"
  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:

# gloabal x and y
  # 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.

  # do something
  # if not false call foo
# call foo

See Recursive function for more details.

Recommend readings:

Tweet itFacebook itG+ itDownload PDF versionFound an error/typo on this page?

{ 6 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"
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.


2 unop December 23, 2012 at 5:07 am


$(command) – causes the command to be run in a subshell (child process of the parent) and any changes made in the subshell do not affect the parent execution context. See the section COMMAND EXECUTION ENVIRONMENT in the bash manpage.

x=1; echo “before x=$x”; echo “$x” | while read x; do echo “during x=$x”; ((x++)); echo “during x=$x”; done; echo “after x=$x”
before x=1
during x=1
during x=2
after x=1

x=1; echo “before x=$x”; ( x=2; echo “during x=$x”; ); echo “after x=$x”
before x=1
during x=2
after x=1


3 unop December 23, 2012 at 5:09 am


commands should be defined (as per `help function’) using one of the following syntaxes

function funcname { … }
funcname() { … }

definitely not
function funcname() { … }


4 Newbie March 3, 2013 at 12:19 am


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

Have a good time


5 Jordan May 3, 2013 at 2:59 pm

So helpfull as usually…


6 Ting July 2, 2013 at 1:55 pm

Can’t functions take in variable? As $1… .


Leave a Comment

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

Previous Faq:

Next Faq: