Comparing Arrays?

Is there anyway that I can compare two Arrays to see if any new strings have been added in them? eg:

Array 1: Joe Bob Jane
Array 2: Joe Bob Jane Greg

It would then output a new array with the changes:

Array 3: Greg

I'm not very good at shell scripting, and my google and forum searches have come up empty. I'd rather do the whole thing in bash, because this will be run on OSX, and you don't really get much else than bash unless you install developer tools, and the computers that I intend to use the script on will not have the develope tools.

Thanks in advance!

Perhaps just use strings intead of arrays, e.g....

#!/usr/bin/bash

a1="Joe Bob Jane"
a2="Joe Bob Jane Greg"
a3=${a2#$a1}
echo $a3

The problem with that is that if I try to do this (which is what will end up happening):

#!/bin/sh

a1="Joe Bob Jane"
a2="Joe Bob Jack Jane Greg"
a3=${a2#$a1}
echo $a3

The output I get is this:

Joe Bob Jack Jane Greg

And I need it to only return the words in the second string that weren't in the first, which is why I thought arrays would be better.

This should only return the words in the second string that weren't in the first...

#!/usr/bin/bash

a1="Joe Bob Jane"
a2="Joe Bob Jack Jane Greg"
a3=$(printf "$a1\n$a2"|awk '{for(i=1;i<=NF;i++)if(NR==1)a[$i]=i;else if(!($i in a))print $i}')
echo $a3
ruby -e 'puts (ARGV.last.split -
 ARGV[-2].split).join(" ")' "foo bar" "zed foo bar zab"
zed zab
newlisp -e '(silent)(println (join (difference
 (parse (last (main-args))) (parse (nth -2 (main-args)))) " "))' "foo bar" "zed foo bar zab"
zed zab

The newlisp executable, which is all you need, is about 170kb on my machine. You could put it on a floppy or a flash drive.