how to write function?

Forum rules
Before you post please read this

how to write function?

Postby kaykav on Thu Oct 20, 2011 3:22 pm

Hi
I have been trying to learn function writing for approx. two years now. I must have read hundreds or more articles and how-tos. I'm having trouble understanding the whole concept.
My question is: Do I have to write a shell script (#! /bin/bash) to create a function? Or? Also I can't see much difference betwen shell scripting and funtion writing. I'm not even sure I'm
phrasing this correctly. Non-the-less ,Do I have to begin creating a function with #!/bin/bash? Thank you...
Last edited by Oscar799 on Fri Oct 21, 2011 3:46 am, edited 1 time in total.
Reason: Edited title to make it clear it is a question not a howto guide
kaykav
Level 3
Level 3
 
Posts: 149
Joined: Tue Jan 06, 2009 12:09 am
Location: crossville tn

Linux Mint is funded by ads and donations.
 

Re: how to write function?

Postby Oscar799 on Fri Oct 21, 2011 3:47 am

Moved here from Newbie Questions
Image
"Don't fix it if it ain't broken,don't break it if you can't fix it" Husse
Registered Linux User #511789
User avatar
Oscar799
Level 18
Level 18
 
Posts: 8826
Joined: Tue Aug 11, 2009 9:21 am
Location: United Kingdom

Re: how to write function?

Postby AlbertP on Sat Oct 22, 2011 11:49 am

#!/bin/bash or #!/bin/sh marks the beginning of a shell script. You can write a function somewhere within the script. Note that I have never used functions inside Bash scripts.
Registered Linux User #528502
Image
Feel free to correct me if I'm trying to write in Spanish, French or German.
AlbertP
Level 16
Level 16
 
Posts: 6514
Joined: Sun Jan 30, 2011 12:38 pm
Location: The Netherlands

Re: how to write function?

Postby Roken on Sat Oct 22, 2011 2:56 pm

Here's a very simple example of a bash function:

Code: Select all
#!/bin/bash

calculate() {
   if [ ! -z $1 ] && [ ! -z $2 ]; then
      echo "The result of $1 plus $2 is " $(($1 + $2))
   fi
}

calculate $1 $2
exit


The actual function is cacluate, which takes two parameters, tests to make sure they are there, adds them together and outputs the result. The penultimate line simply calls the function using the two parameters passed to the script, but you could just as easily replace it with:

Code: Select all
calculate 45 9
calculate 2 6
calculate 101 202


and so on, to add up each pair of numbers that you pass to it. Really, all a function is is a mechanism to stop you having to repeat the same codeblock throughout your script. The three calculate lines shown above would expand internally to:
Code: Select all
   if [ ! -z 45 ] && [ ! -z 9 ]; then
      echo "The result of 45 plus 9 is " $((45 + 9))
   fi
   if [ ! -z 2 ] && [ ! -z 6 ]; then
      echo "The result of 2 plus 6 is " $((2 + 6))
   fi
   if [ ! -z 101 ] && [ ! -z 102 ]; then
      echo "The result of 101 plus 102 is " $((101 + 102))
   fi


so you see how much less typing is required for reusable code blocks by using a function.

Just to add, this really is a very simplistic example and you would be unlikely to use a function to do this, but the real power is for complex code blocks. Think of the code between the curly braces in the function as it's own script within a script,which can be as simple or as complex as necessary, and you get the idea.


EDIT: If you are familiar with BASIC programming, functions are the same as BASIC PROCEDURES.
Kernel Linux Tex 3.2.2-1 (64 bit) xfce , burg
Arch
ATI Radeon HD 4670, 1GB
OSS4
AMD Phenom II X4 (965BE) @ 3.6 Ghz (Overclocked)
8Gb RAM
Image
User avatar
Roken
Level 5
Level 5
 
Posts: 747
Joined: Fri Nov 19, 2010 4:55 pm
Location: Oldham, UK


Return to Scripts & Bash

Who is online

Users browsing this forum: No registered users and 4 guests