在 shell 脚本中编写 ghci 会话

Posted

技术标签:

【中文标题】在 shell 脚本中编写 ghci 会话【英文标题】:writing ghci session in a shell script 【发布时间】:2021-08-05 22:31:15 【问题描述】:

我正在使用queryparser 工具来解析查询。我正在使用stack ghci命令将工具的组件和文件加载到ghci中,并将编写haskell命令。一旦我使用“stack ghci”,它就会进入交互模式来编写命令

我想编写一个 shell 脚本并自动执行该过程,并以编程模式运行命令。

我尝试运行的命令会像

demoTableLineage "INSERT INTO foo SELECT * FROM bar" demoJoins "SELECT * FROM foo JOIN bar ON a=x AND b+c = y+z"

有人想用 shell 脚本编写它们并以编程方式而不是交互方式自动化它们吗?

【问题讨论】:

Haskell 的 shebang 是 runhaskell,所以你可以把 #!/usr/bin/runhaskell 作为脚本的第一行。 【参考方案1】:

在 Unix 系统上,您可以创建一个可执行文件,其中 shebang [wiki] 指的是 runhaskell 可执行文件。这通常位于/usr/bin/runhaskell,因此您可以使用:

#!/usr/bin/runhaskell

main = print (2+2)

如果您随后使文件可执行 (chmod +x myfile.hs),那么您可以使用以下命令运行它:

$ ./myfile.hs
4

【讨论】:

以上是关于在 shell 脚本中编写 ghci 会话的主要内容,如果未能解决你的问题,请参考以下文章

用脚本实现linux2个月前的会话日志打包备份到指定文件夹并删除

Linux Shell脚本编写——呈现数据

从 shell 脚本生成交互式 telnet 会话

工作中编写shell脚本的实践

shell编程中,如何将编写的脚本把其脚本名当做shell命令来使用

编写一个shell脚本,输出所有尾数是5的三位数