8

我最近开始使用 Haskell Turtle库来替换我的一些 shell 脚本。

set -x有没有办法以某种方式在 bash 脚本中启用内置 Turtle 命令(如 cd)ala 的回显?cp我发现在执行许多命令并且其中一个因异常而失败(例如带有 的命令)的情况下,调试 Turtle 脚本是很成问题的Exception:openBinaryFile: does not exist。或者,您是否有一些建议如何快速隔离此类问题,以便我不必puStrLn/echo在整个脚本中散布命令?

4

1 回答 1

5

遗憾的是,这是不可能的,因为海龟不提供追踪。例如,mv仅使用 Haskell 函数定义(无 shell 调用),因此在运行时无法打印任何内容:

mv :: MonadIO io => FilePath -> FilePath -> io ()
mv oldPath newPath = liftIO (Filesystem.rename oldPath newPath)

文档中提到了这个限制,作者建议看一下Shelly,它类似但提供了额外的功能:

turtle 被设计为对初学者友好,但因此缺乏某些功能,例如跟踪命令。如果您对使用 turtle 感到满意,那么您还应该查看提供类似功能的 Shelly 库。

于 2015-09-15T11:26:47.270 回答