Help with functions


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Help with functions
# 1  
Old 04-27-2010
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":

Code:
function sample_function {
VAR1=${1}
VAR2=${2}
}

Later on in the script call "sample_function" and pass the variables "VAR1 and VAR2 to it:

Code:
sample_function VAR_1 VAR_2

HOWEVER, please check out the following that I typed into my terminal as a test:

Code:
bash-3.2$ sample_text='hello world'
bash-3.2$ function sample_function {
> echo $sample_text
> }
bash-3.2$ sample_function 
hello world

In this case I didn't have to pass the variable "sample_text" to the function. Why is that? What am I missing about passing parameters to functions?

Mike
# 2  
Old 04-27-2010
You defined the envrionment variable sample_text BEFORE you decalred the function, so it already had the variable defined.
Code:
s()
{
    echo "hello $1"
}

s 'greetings from unix forum'
s "more testing"
s 4 3 2 1
# this last one  shows "hello 1"  because 1 is parm #1
s 1 2 3 4
s "1234"
s " 1 2 3"  4

quotes (' and ") delimit arguments
# 3  
Old 04-27-2010
Hi Jim,

I really appreciate the reply.

- Just to confirm: if you define a variable in a BASH shell script, then call a function, the called function will know of the variable that was defined? Is this unique to BASH, or is it a general UNIX/Linux thing?

Thanks again.

Mike
# 4  
Old 04-28-2010
Within shell functions, variables for the current shell process can be both read and set.
Code:
$ function sample_function { echo $sample_text; }
$ sample_text='hello world'
$ sample_function
hello world
$ sample_text='goodbye world'
$ sample_function
goodbye world
$ function sample_function { sample_text='hello again'; }
$ sample_function
$ echo $sample_text
hello again
$



---------- Post updated at 11:47 AM ---------- Previous update was at 11:42 AM ----------

Positional parameters are local to shell functions.
Code:
$ set param1 param2
$ echo $1 $2
param1 param2
$ function sample_function { echo $1 $2; }
$ sample_function

$ sample_function $1 $2
param1 param2
$

 
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. Shell Programming and Scripting

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.... (3 Replies)
Discussion started by: Glowworm
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