Shelisp è un breve programma che fornisce meccanismi per la composizione e l'esecuzione di shell Unix (soprattutto bash) comandi e costrutti da Common Lisp.
Per eseguire shelisp, dire al prompt dei comandi:
lisp -load shelisp.lisp
Questo dovrebbe iniziare CMU Common Lisp e fornire il prompt, *. Una forma più conveniente potrebbe essere quella di avviare emacs, e il comando Mx cmulisp che inizierà una modalità `inferiore lisp 'con CMU; poi, dire:
(Load "shelisp.lisp")
Il botto (!) Fuga a guscio
Ora si può dire (il '*' è già messo lì da cmulisp):
*! Ls
E sarà eseguito il comando ls shell (eseguendo un'istanza bash e passando il comando ad esso.
Naturalmente, si sono effettivamente in Lisp. Si può provare questo:
* (Defun fattoriale (x) (if (zerop x) 1 (* x (fattoriale (1- x)))))
FATTORIALE
* (Fattoriale 33)
8683317618811886495518194401280000000
Quindi, se si immette ``! '' Il resto della linea (fino al primo fine della linea che non è fuggito con un `` ''), viene interpretato come un comando bash e il risultato è stampato sullo standard output.
Ora provate:
*! Echo? (+ 2 3) Zuzu
5zuzu
I `? ' è la 'fuga lisp'. Segue un s-espressione che viene letta, eseguita e stampato (con princ) e il risultato stampato sostituisce il `? ' e l'espressione del comando di shell. Può essere qualsiasi espressione Lisp.
* Echo (+ 2/3 2/11) "
Cosa c'è di nuovo in questa release:!?
- Alcuni altre funzioni sono state aggiunte (wget-test, bash-risultato), e questa versione è ripubblicato sotto il Lisp LGPL.
I commenti non trovato