ksh scripting- array format

Hi Everyone,

I have a ksh script that queries a database. The query output looks like this:

$queryResult = [name1 age1 name2 age2 name3 age3]
 
echo ${queryResult[0]} = name1
echo ${queryResult[1]} = age1
echo ${queryResult[2]} = name2
echo ${queryResult[3]} = age2
...

I need to insert those values into a new array that would look like this:

$newArray = [name1age1 name2age2 name3age3]
 
echo ${newArray[0]} = name1age1
echo ${newArray[1]} = name2age2
echo ${newArray[2]} = name3age3

Basically, I am trying to concatenate each person's name and age into one postion within $newArray. If anyone can provide me with a solution to this, especially using a function, I would be most appreciative. Thanks.

This function should do it:

concat_result() {
   P=1
   while [ $P -lt ${#queryResult[@]} ]
   do
       newArray[P/2]=${queryResult[P-1]}${queryResult[P]}
       let P=P+2
   done
}

And here it is being used in your test case:

set -A queryResult name1 age1 name2 age2 name3 age3 
 
echo ${queryResult[0]} = name1
echo ${queryResult[1]} = age1
echo ${queryResult[2]} = name2
echo ${queryResult[3]} = age2
 
concat_result

echo ${newArray[0]} = name1age1
echo ${newArray[1]} = name2age2
echo ${newArray[2]} = name3age3
1 Like

Another way of doing it:

#!/bin/ksh93

concat_result() {
   typeset -n array=$1

   for (( P=1; P < ${#array[@]}; P+=2 ))
   do
       newarray[P/2]="${array[P-1]}${array[P]}"
   done

   echo "${newarray[*]}"
}


queryResult=(name1 age1 name2 age2 name3 age3)

newArray=($(concat_result "queryResult"))

echo ${newArray[*]}
1 Like