> there's no return to the bash shell (either using '+' or not).
> If I had the
> at the bottom of the code as suggested by Henrik:
> $ pil pil_files.l -main
> outputs nothing and return to bash (either using '+' or not).
Yes, sure. Because (bye) is called in "pil_files.l", before -main is
ever reached. Remember that the command line arguments are loaded or
evaluated from left to right.
You can either call both (main) and (bye) in your script, or you don't
put (bye) into the script and pass it on the command line:
$ pil pil_files.l -main -bye
The latter has the advantage that you can better debug the script, i.e.
call it as
$ pil pil_files.l -main +
or even only as
$ pil pil_files.l +
and do things like calling (main) manually in the REPL.