1) because, currently port number can be set ether ZEPPELIN_PORT(zeppelin-env.sh) environment variable or zeppelin.server.port VM property (zeppelin-site.xml)

2) java's static main() does not return until we want to stop the server.
And we're running java process using background flag in our daemon shell script, there's no simple way of waiting which depends on server's condition.