在 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个月前的会话日志打包备份到指定文件夹并删除