Need a little help with functions


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need a little help with functions
# 1  
Old 05-10-2009
Need a little help with functions

I'm semi new to unix/linux and am trying to convert a program I wrote in C++ to a bash script. It's a program that prints Fibonacci's series. I have found scripts that will do it, but I'm trying persistently to get this one to work. The problem occurs when I try to return a value from the function. I get no return or I have done something wrong within the function itself. Any help would be much appreciated. Here's what I have so far:

#!/bin/bash
#Fibonnaci_Series

fibonacci ()
{
n=$1
if [ $n -le 1 ]
then
return $n
else
l=`fibonacci $((n-1))`
r=`fibonacci $((n-2))`
return $((l+r))
fi
}

echo "Enter the limit for Fibonaaci's Series: "
read limit
for((i=0; i<=$((limit-1)); i++))
do
result=$(fibonacci $i)
echo "Fibonacci(" $((i+1)) ") = $result"
done
# 2  
Old 05-10-2009
Use echo instead of return in your function:

Code:
#!/bin/bash

fibonacci ()
{
  n=$1
  if [ $n -le 1 ]
  then
    echo $n
  else
    l=`fibonacci $((n-1))`
    r=`fibonacci $((n-2))`
    echo  $((l+r))
  fi
}

echo "Enter the limit for Fibonaaci's Series: "

read limit
for((i=0; i<=$((limit-1)); i++))
do
  result=$(fibonacci $i)
  echo "Fibonacci(" $((i+1)) ") = $result"
done

Regards
# 3  
Old 05-10-2009
Wow, Thanks for the reply Franklin52, that certainly does the trick. I did actually see an example similar to that but I took it to be similar to that of a void function in other languages.

I am still a bit confused here. I have used echo to output to the screen before but does it actually cause a return when used in the context of a function. The value, or maybe even a string appears to be assigned to the result variable and even outputs as I did a bit of tinkering around with it to see if I could figure it out myself.

Could somebody walk me through the first iteration of the loop here (as the first and second are the easiest). First 0 is passed as the first argument and assigned to n. As 0 is less than or equal to 1 then echo $n (in this case 0). It doesn't output at this point, but in fact appears to return and assign it to the result variable. Is this what is actually happening or could somebody clarify it a bit for me?

I have seen functions with multiple echo statements following each other, so I'm pretty sure it doesn't cause a return. This just baffles me.
# 4  
Old 05-11-2009
To see what happens within the (recursive) function you can run your script in the debug mode:

Code:
bash -x scriptname

Replace the lines in the loop with something like this:

Code:
for((i=0; i<=$((limit-1)); i++))
do
  fibonacci $i
done

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to execute functions or initiate functions as command line parameters for below requirement?

I have 7 functions those need to be executed as command line inputs, I tried with below code it’s not executing function. If I run the ./script 2 then fun2 should execute , how to initiate that function I tried case and if else also, how to initiate function from command line if then... (8 Replies)
Discussion started by: saku
8 Replies

2. Programming

Functions

Hi All, Can any one help me. I am calling in a function2 with string as parameter from function1, the function1 gives 3 values. how i get the 3 values from funciton2 to function1. i have to give a return or something. thanks in advance. (2 Replies)
Discussion started by: uday.sena.m
2 Replies

3. UNIX for Dummies Questions & Answers

== vs -eq and functions

Hey I have a question.... what is the difference between using == vs -eq when testing in WHILE loops. I use the following test that only worked with == signs.... if why do i need == and not -eq? 2. I need to re-use some code in a couple places in this script. is functions my best... (5 Replies)
Discussion started by: danieldcc
5 Replies

4. Shell Programming and Scripting

i think i need functions ?

Hi, im making a little script but need some help Code i have so far is read -p 'Bot Nickname:' ecnick read -p 'Bot Username:' ecusername read -p 'Bot Realname:' ecrealname read -p 'Your Email:' ecemail echo '' echo Your bots nickname is set to $ecnick echo Your bots username is set to... (2 Replies)
Discussion started by: Gemster
2 Replies

5. UNIX for Dummies Questions & Answers

Help with functions

Hi, I am exploring with defining functions in my BASH shell scripts. However, I am bit confused about how to pass parameters to my functions. I was under the impression that you must do something like the following: Define a function called "sample_function": function sample_function {... (3 Replies)
Discussion started by: msb65
3 Replies

6. Shell Programming and Scripting

functions

I have korn shells where I want to create a function passing $1 to a function , determine my $STAT_ENV value, set the paths and return the paths for STATSH,STATPRM,STATSQR,STATSQL,STATCTL TO BE USED IN THE UNIX SCRIPT THE CALLED THE fucnction in the first place. Can someone tell me the best... (2 Replies)
Discussion started by: TimHortons
2 Replies

7. Programming

using c++ and c standard I/O functions

Is it not a healthy practice to mix C and C++ standard I/O functions together e.g. string name; // this is a declared instance of the string class in C++ printf("\nPlease enter your name: "); cin >> name; I did something similar in a program Im designing, and used it several... (1 Reply)
Discussion started by: JamesGoh
1 Replies

8. Shell Programming and Scripting

Use of functions

Hi my shell is tcsh can I have functions in my shell scripting? Is the below shell script correct. Can I have two functions and call one of them as required. ---------- echo "functions" f1 f1 () { echo "hello" } f2 () (1 Reply)
Discussion started by: amitrajvarma
1 Replies

9. Shell Programming and Scripting

functions in

hi could anybody please suggest me how to put a function memory for particular user. say i am a user rao. want have a function foo in memory . i have done this .typed the function function in the shell it worked for the session.but next time i do login its not there . i can i have a... (6 Replies)
Discussion started by: Raom
6 Replies

10. Shell Programming and Scripting

Regarding functions

Hi, I have a function or script like this. show() { echo "Hi" } | tee -a log show This creates a logfile and prints Hi in it. Now when I try to do the same for sql like this: show() { sqlplus -s scott/tiger<<! select * from details; ! } | tee -a log show Then it gives me a... (2 Replies)
Discussion started by: sendhilmani
2 Replies
Login or Register to Ask a Question