我最近开始使用Haskell Turtle库来替换我的一些shell脚本。
有没有办法以某种方式在bash脚本中启用内置Turtle命令(如cd)ala set -x
的回显?我发现在执行许多命令的情况下调试Turtle脚本很有问题,其中一个命令因异常而失败(如cp
命令Exception:openBinaryFile: does not exist
)。另外,您是否有一些建议如何快速隔离这些问题,以便我不必在整个脚本中散布puStrLn/echo
命令?
答案 0 :(得分:5)
可悲的是,这是不可能的,因为龟不提供追踪。例如,mv
仅使用Haskell函数定义(无shell调用),因此在运行时无法打印任何内容:
mv :: MonadIO io => FilePath -> FilePath -> io ()
mv oldPath newPath = liftIO (Filesystem.rename oldPath newPath)
文档中提到的此限制,作者建议您查看Shelly,它类似但提供额外的功能:
乌龟的设计初学者友好,但结果却缺乏 某些功能,如跟踪命令。如果你觉得使用舒服 然后你还应该看看Shelly图书馆哪个 提供类似的功能。