【问题标题】:Can Haskell be used to write shell scripts?Haskell 可以用来写 shell 脚本吗?
【发布时间】:2012-01-19 12:09:39
【问题描述】:

是否可以在 Haskell 中编写 shell 脚本,如果可以,您是如何做到的?就这样换解释器?

#!/bin/ghci

【问题讨论】:

  • 可能是 #!/usr/bin/gchci#!/usr/bin/env ghci - 但它是 Haskell 脚本,而不是 shell 脚本。
  • 看这个问题。它应该给你很多信息。 “Clojure 还是 Haskell 更适合制作命令行工具?” stackoverflow.com/questions/4997003

标签: linux shell unix haskell


【解决方案1】:

使用ghci 只会在 GHCi 中加载模块。要将其作为脚本运行,请使用 runhaskellrunghc

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

【讨论】:

    【解决方案2】:

    请查看此演示文稿:Practical Haskell: scripting with types

    【讨论】:

      【解决方案3】:

      如果你把解释器改成这样,它应该可以工作:

      #!/usr/bin/runhaskell
      

      【讨论】:

      • 与硬编码路径相比,通常最好使用@Hammar 建议的方式使用#!/usr/bin/env runhaskell,这样runhaskell 可以在路径中的任何位置找到,而不仅仅是在/usr/bin 中。很多人不会在系统级别安装 Haskell,所以你不能总是在那个位置找到它。
      【解决方案4】:

      截至 2016 年 10 月,此问题有更好的答案:使用 The Haskell Tool Stack script interpreter。基于stack 的Haskell 脚本是可移植的,因为它们下载(并缓存)ghc 的正确版本及其所有包依赖项。

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

      另见教程How to Script with Stack

      【讨论】:

        【解决方案5】:

        使用 Haskell 编写 shell 脚本的另一种方法是生成脚本,例如使用 bashkell。如果您想在没有安装 haskell 的系统上运行,这很有用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-05
          • 2010-10-02
          • 1970-01-01
          • 2021-07-07
          • 2016-09-22
          相关资源
          最近更新 更多