2012-01-19 29 views
24

¿Es posible escribir scripts de shell en Haskell y, de ser así, cómo lo hace? ¿Simplemente cambiando el intérprete como tal?¿Se puede usar Haskell para escribir scripts de shell?

#!/bin/ghci 
+4

Probablemente '#!/Usr/bin/gchci' o' #!/Usr/bin/env ghci' - pero entonces es un script de Haskell, no uno de shell. –

+3

Mire esta pregunta. Debería darte mucha información. '¿Clojure o Haskell son mejores para hacer herramientas de línea de comando?' http://stackoverflow.com/questions/4997003 –

Respuesta

43

Usando ghci se acaba de cargar el módulo en GHCi. Para ejecutarlo como una secuencia de comandos, utilice runhaskell o runghc:

#!/usr/bin/env runhaskell 
main = putStrLn "Hello World!" 
11

Debería funcionar si cambia el intérprete para esto:

#!/usr/bin/runhaskell 
+4

En lugar de hardcoding, en general, es mejor usar '#!/usr/bin/env runhaskell' de la misma manera que sugiere @Hammar para que' runhaskell' se pueda encontrar en cualquier lugar en su camino en lugar de solo en '/ usr/bin'. Muchas personas no instalan Haskell a nivel del sistema, por lo que no puede confiar en que siempre lo encuentre en esa ubicación. – aculich

3

Otra manera de escribir scripts de shell mediante Haskell es para generar los scripts, como con bashkell. Esto es útil si desea ejecutar en sistemas que no tienen Haskell instalado.

4

A partir de octubre de 2016, hay una mejor respuesta a esta pregunta: use The Haskell Tool Stack script interpreter. Los scripts de Haskell basados ​​en stack son portátiles porque descargan (y almacenan en caché) la versión correcta de ghc y todas sus dependencias de paquetes.

#!/usr/bin/env stack 
-- stack --resolver lts-3.2 --install-ghc runghc 
main = putStrLn "Hello World!" 

Véase también el tutorial How to Script with Stack.

Cuestiones relacionadas