If you want to pass an array of items to a bash function, the simple answer is that you need to pass the expanded values. That means that you can pass the data as a quoted value, assuming that the elements are whitespace delimited, or you can pass it as a string and then split it using an updated IFS (Internal Field Separator) inside the function.
Following is an example of taking the output of a Hive query (a single column that is separated by new lines), wrapping it in quotes and passing it as a single value to the function.
#!/bin/bash
#
# This function will accept the expanded elements of the array
#
function foo() {
# Loop through elements in the first argument passed.
# In this case, each is separated by whitespace so we do
# not need to change the IFS
for i in $1
do
echo "i = $i"
done
}
# Dynamically build our hive query
HIVE_QRY="use somedb; select some_column from some_table;"
# Dynamically build the hive command to execute
CMD="hive -e '$HIVE_QRY'"
# Execute the hive query in a subshell and store the result in
# the 'QRY_RETVAL' variable
QRY_RETVAL=$(eval $CMD)
# Call the foo method and pass it the output of the query, /QUOTED/
# so that it will be passed as a single argument and not a series
# of arguments for each row returned by the query
foo "${QRY_RETVAL}"