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