Sure, debug that shell script, but then don't forget to propagate the fix to all the shell scripts.
The shell script approach violates the DRY principle--it's probably super similar to some 50 other init scripts on the same system. systemd, in principle, removes the boilerplate so that the bug would only have to be fixed once.