[Openmcl-devel] Running ccl as a shebang script
Ron Garret
ron at flownet.com
Thu Feb 16 07:12:25 PST 2017
These are all very clever, but I guess I should have been a little more explicit about my motives and concomitant design requirements: I want to be able to use ccl as a shell scripting language without having to jump through any cringe-inducing hoops. That means I want my script ideally to look like this:
#!/bin/env ccl
(lisp-code)
i.e. no “:” ; hacks, no requirement to call (quit) at the end, no need to put anything special in your ccl-init. I want it to Just Work. The reason I want this is because I want to recruit new Lisp programmers, and when one of them says, “I use Python, and I can do this:
#!/bin/env python
python-code
Can Lisp do that?” I want the answer to be an unqualified, “yes.”
rg
On Feb 16, 2017, at 6:27 AM, Barry Fishman <barry at ecubist.org> wrote:
>
> On 2017-02-16 08:44:24 +05, Zach Beane wrote:
>> I've used variations on this trick for a long time. ccl-script.sh follows:
>>
>> ":" ;
>> #| Any necessary shell setup can go here
>>
>> # Exec into Lisp
>> exec ccl -n --quiet --batch --load `which "$0"` -- ${1+"$@"}
>>
>> # |#
>>
>> (format t "Hello, world. Args: ~S~%" ccl:*command-line-argument-list*)
>> (format t "What's your name? ")
>> (force-output)
>> (format t "~&Hello, ~A~%" (read-line))
>> (ccl:quit)
>
> Or similarly, since 'ccl' is a script that already does the shell setup:
>
> --8<---------------cut here---------------start------------->8---
> ":" ; exec ccl --no-init --load "`which $0`" -- ${1+"$@"}
> ;;;; -*- lisp -*-
> (defvar *program* (file-namestring
> #.(or *compile-file-truename* *load-truename*)))
> (defvar *args* *unprocessed-command-line-arguments*)
>
> (format t "Program: ~a~%" *program*)
> (do ((count 0 (1+ count))
> (args *args* (cdr args)))
> ((null args))
> (format t "Arg ~D = ~S~%" count (car args)))
>
> (quit)
> --8<---------------cut here---------------end--------------->8---
>
> --
> Barry Fishman
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> https://lists.clozure.com/mailman/listinfo/openmcl-devel
More information about the Openmcl-devel
mailing list