Sending an array from Function 1 to Function 2

Posted on 2009-03-31
Last Modified: 2013-12-26
Hi all.

I am trying to send an array from a parent function (not shown) to a child function (see below, configCheck). When I call configCheck from the main script, it works fine. But when I call it from within menuBdcGuide, there is an error.

The log shows that the split has not happened. When configCheck is called directly, the log shows:

Checking database accounts
Checking database configuration

But when it is run from another function, instead what we see is:

Checking database (accounts configuration)

Which means that the code to create the array has not worked correctly.

How can I fix this so I can call configCheck from within my other function? My guess is that the IFS might have to be different. This would be fine, because configCheck is never called directly; it's only ever used from within functions.
configCheck ()


	# checks to see whether a db key exists

	# version 1.0


	# required inputs:

	# ccKey - key to check for

	# ccDbs - databases to check in


	# returns:

	# 0 - key does not exist

	# 1 - key exists

	# 1001 - function error


	# instructions for use:

	# testDbs=( accounts configuration )

	# configCheck "myKey" testDbs

	# if [ $? -eq 1 ]; then

	#	echo "Key exists!"

	# fi


	local ccKey=$1

	local ccDbs=;

	local ccReturn=1001

	# Setting the shell's Internal Field Separator to null

	# from

	local OLD_IFS=$IFS


	# Create a string containing "dbs[*]"

	local ccReadArray="$2[*]"

	# assign loc_array value to $dbs[*]} using indirect variable reference


	# Resetting IFS to default


	writeLog "Checking database for key $ccKey."

	for element in $(seq 0 $((${#ccDbs[@]} - 1)));

	do                  #  ${#ccDbs[@]}

			    #+ gives number of elements in the array.


			    #  Question:

			    #  Why is  seq 0  necessary?

			    #  Try changing it to seq 1.

		writeLog "Checking database ${ccDbs[$element]}."

		runCommand "db ${ccDbs[$element]} show $ccKey" "quiet"

		if [ $? -eq 0 ]; then

			# previous data exists

			writeLog "Configuration key detected in ${ccDbs[$element]} database!";


		elif [ $? -eq 1 -a $ccReturn -ne 1 ]; then




	return $ccReturn;

} # configCheck

Open in new window

Question by:davidiwharper
  • 3

Author Comment

ID: 24046175
Increasing points value

Accepted Solution

davidiwharper earned 0 total points
ID: 24114027
I have a solution, which was not clear in the code given at the beginning.

Creating the array to pass thus:
local myArray=(accounts configuration)

... doesn't work as expected. What DOES work is creating the array as follows:

local myArray[0]=accounts

This works as expected.

Author Comment

ID: 24114030
There is now a (self-generated) solution for this issue. Please cancel the deletion request if appropriate.

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Recently, an awarded photographer, Selina De Maeyer (, completed a photo shoot of a beautiful event ( in An…
Utilizing an array to gracefully append to a list of EmailAddresses
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Both in life and business – not all partnerships are created equal. As the demand for cloud services increases, so do the number of self-proclaimed cloud partners. Asking the right questions up front in the partnership, will enable both parties …

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now