How to check the exit status of an application after using 'open' in shell
My answer is: you can't with open even with the -W flag.
Rather use a shell script repeat_run which might be built as follows:

cat &gt;repeat_run.sh &lt;&lt;'__eof__'
#!/bin/sh
app_name=$1
bin_name=`defaults read /Applications/${app_name}.app/Contents/Info.plist CFBundleExecutable 2&gt;/dev/null`
if [ "${bin_name}" = "" ] ; then
    echo "${app_name} not found" &gt;&amp;2
    exit 2
fi
bin_path=/Applications/${app_name}.app/Contents/MacOS/${bin_name}
trap "echo manual abort ; exit 1"  1 2 3 15
while : ; do
    ${bin_path}
    rc=$?
    case $rc in
        0)      echo "$1 terminated correctly" ;;
        *)      exit ${rc} ;;
    esac
done
__eof__
make repeat_run
./repeat_run Pages