Passing Values from a shell script

Hi all

I want to know how to pass value from one shell script to another
suppose i have script named A.This 'A.sh' calls 'B.sh' .Now some calculations
are done by B.sh ..Say in variable X.
Now i want to pass the value of this X variable to 'A.sh'...

A.sh ----> B.sh ( X variable )

A.sh <---- B.sh ( send value of X variable to A.sh )

How can I do it...
Please help asap

I can think of two ways to do this:
Method 1 -- Use command substitution:-

A.sh:
var=10
var=`B.sh $var`
echo $var

B.sh:
echo `expr $1 + 2`

Ouput=12

Method 2 -- Use '.' to run the child script:-

A.sh:
var=10
. B.sh
echo $var

B.sh
let var=$var+2

Output=12

Hope this helps,
Abhishek Ghose

Forgot to mention---the "Output" mentioned above is a result of running "A.sh"

Also ,you can use export:

$ cat A.sh
export VAR=10
B.sh

$ cat B.sh 
let VAR=$VAR+2

Hi Abhishek,
Its working Thanks a lot..

I want to know what does it Imply when I invoke a shell script using
"." notation

i.e . B.sh
( does it mean to run the script in the current shell ? )

But if i use
X=`B.sh` ..My script B.sh hangs and I have to use ctrl + Z
What is the reason for it ..
Also I am not passing any variable to B.sh ... But I want to get the variable value from B.sh in A.sh
( I am new to Unix )
Thanks.
Dhananjay

"." runs the script in current shell, as you said. The reason for doing this is we want B.sh to recognise the variable "var"(which can only be recognised in the shell that it was defined in)

If you are not planning to pass any variable, then rather use metohd 2. But a caveat: Method 2 implicitly assumes that your script understands certain variable names (like "var" in my examples). Basically , this means that you might not be able to re-use B.sh. Also, better check whether the variable in question is null first. In such a case, make B.sh throw out an error message and abort execution.

In which scenario did it hang? When the scripts were written according to method 1 or method 2?
A statement like X=`B.sh` might hang in scenario 1, as it expects a commandline input. But not sure.

My script code as follows
--------------------------------------------
. database_checking.sh

echo "Database Name" $db_name
echo "set feed off verify off pagesize 0
select username from user_users;"|sqlplus -s /@$db_name|read user_name
---------------------------------------------------------------

My database_checking.sh code follows which return db_name variable to above code....which is furthur used for retrieving username ...
-----------Start------------------------------------------------
db_var=1
while test $db_var -eq 1
do
echo "\n\t\t\tEnter Database Name"
echo "\t\t\t[ Example:marketbld.uk.d.ch ] or Press [ 'Q'/'q'] to exit :\c"
read db_name
func_meta_ch "$db_name"

        if [ "!$db_name!" != "!!" -a $var\_meta_ch -eq 0 ]
        then
           expr $db_name \+ 2 &gt;/dev/null 2&gt;&1
           db_val=$?

           if [ $db_val -ne 0 ]
           then
              echo "set feed off verify off pagesize 0
                    select count\(1\) from mktactivity;"|sqlplus -s /@$db_name|read sqldb_name

                    expr $sqldb_name \+ 2 &gt;/dev/null 2&gt;&1
                    db_cnt=$?

                    if [ "!$sqldb_name!" = "!ERROR:!" ]
                    then
                       echo "\\t\\t\\tError: Database name entered does not exist."
                    else              
		    if [ $db_cnt -ne 0 ]
                        then
                          echo "\\t\\t\\tError: Database name entered does not exist."
		    else
                          db_var=2
		    fi	
                    fi
            else
               echo "\\t\\t\\tError: Database name entered does not exist."
             fi
        else
           echo "\\t\\t\\tError: Invalid Database name."
        fi
    done  

echo $db_name

------------End ------------------