Your other questions at https://stackoverflow.com/questions/37753783/ and Is there any way to tell if a shell script was killed with signal 9 indicate that what's missing from your question is that you are trying to run Tomcat under upstart.
In such a case:
start-stop-daemon is not appropriate.
- Nor is
su.
- Nor are Poor Man's Daemon Supervisor gyrations to do PID file management in shell script.
All of those are attempting to duplicate stuff that upstart does directly. The use of su is particularly bad, because it isn't a tool for dropping privileges. It is a tool for adding privileges, in a login session. It nowadays has involvement under the covers with various login session management subsystems that makes it particularly inappropriate for the (much simpler) task of dropping superuser privileges in a dæmon. start-stop-daemon is just supererogatory. And upstart knows the process IDs of its children.
In the upstart job file, use the setuid and (if appropriate) setgid stanzas to drop privileges to an unprivileged user:
setuid tomcat
And if you do invoke catalina.sh via sh -c, which isn't really necessary, don't wander into systemd House of Horror territory. (It's only marginally less horrendous when these sorts of things are done with upstart.) Do things the daemontools way and have the shell chain to the script, invoking it via the shell's exec command so that upstart sees the dæmon as its direct child process. (And make sure that upstart knows this with the correct expect stanza, too.)
An explicit shell isn't necessary in the first place, though, because upstart can invoke catalina.sh directly itself, just as systemd and other service management tools can. You furthermore thus don't have the worry of ensuring that /bin/bash is actually the right interpreter for that script.
exec $CATALINA_HOME/bin/catalina.sh run
Further reading