Have you looked at the source code for the ExecSHSilent routine? It returns a zero on success or a 1 for any failure. So your script may pass back an '88' but the routine you used doesn't.
![Confused :?](./images/smilies/icon_confused.gif)
If you want full control, use DSExecute in your routine in pretty much exactly the same general way you are using the ExecSHSilent routine. Difference is it just runs something, it's totally up to you to handle the results, log whatever you want logged, etc etc.