How to capture exit code of child script and send it to parent script?

#!/usr/local/bin/bash

set -vx

/prod/HotelierLinks/palaceLink/bin/PalacefilesWait /prod/HotelierLinks/palaceLink/bin/prodEnvSetup 03212013 &
if [ $? ne 0 ] 
then
 	echo "fatal error: Palace/HardRock failed!!!!" 1>&2
  	echo "Palace Failed" | mail -s "Link Failed at Palace/HardRock" -c gaurav.arora@travimp.com
  	exit 1
fi


if !(/prod/HotelierLinks/palaceLink/bin/HardrockfilesWait /prod/HotelierLinks/palaceLink/bin/prodEnvSetup 03212013 &)
then
  echo "fatal error: Palace/HardRock failed!!!!" 1>&2
  echo "HardRock Failed" | mail -s "Link Failed at Palace/HardRock" -c gaurav.arora@travimp.com
  exit 1
fi

exit 0

I am trying to run from main script two child script parallel and then want to check the status of the both scripts in the main script. if it fails or pass.

Simple:

command_1 &
pid1=$!
command_2 &
pid2=$!
wait $pid1
echo command_1 returned $?
wait $pid2
echo command_2 returned $?

When you run commands interactively, the shell waits on the child unless you say &, and then you must wait later. Fancier code knows that when a child dies, SIGCHLD is sent to the parent and can be caught and processed in a signal handler. Some C wait*() calls allow you to wait for whichever child is next and get the pid and return code and status (exit, stop, start, etc.). In scripting, you do not need that, you spin off the parallel children and then wait for all of them to finish, order not important, just a simple bottleneck.