It's common that a double-dash (--) alone can be used to tell a command line parser to stop interpreting further arguments. So, I implemented that very feature for ABCL in r13226. Lo and behold:
given a test snippet, saved in cmdline.lisp:
(loop for item in *command-line-argument-list* do (format t "got arg ~a~%" item))
we can do
./abcl --batch --eval '(load "cmdlinetest.lisp")' -- hops hups jee jee --eval '(format t "hah~%")' -- -- -- Armed Bear Common Lisp 0.25.0-dev-svn-13225M Java 1.6.0_22 Sun Microsystems Inc. Java HotSpot(TM) Server VM Low-level initialization completed in 0.626 seconds. Startup completed in 1.778 seconds. got arg hops got arg hups got arg jee got arg jee got arg --eval got arg (format t "hah~%") got arg -- got arg -- got arg --