Why using arrays ?
#!/bin/ksh
IFS=",$IFS"
checkshells() {
for a in $S1; do
if [[ ",$S2," != *",$a,"* ]]; then
printf "$a(-),"
fi
done
for a in $S2; do
if [[ ",$S1," != *",$a,"* ]]; then
printf "$a(+),"
fi
done
}
checkshells | awk '{sub(/,$/,"");print}'
Hope This Helps, PH...