groff:检查文件是否存在,或抑制 .so 中的错误消息

groff:检查文件是否存在,或抑制 .so 中的错误消息

在 groff 中,当且仅当文件存在时,有没有办法“.so”文件?我要么想做“.so 文件”,并让它在文件不存在时继续执行而不出现错误消息,要么我可以在 .if 中放入一些内容来首先检查。 (如果有一个命令行选项来抑制所有错误消息,那就不好了,这将阻止我修复实际错误。)

如果无法直接在 groff 中执行此操作,我将制作一个封闭的 shell 脚本,该脚本检查文件是否存在并发出 .so 命令或不适用,但如果有一个 inside-groff 方法会更简单。

答案1

有一个不安全解决此问题的方法包括roff请求.pso执行 shell 命令:

.pso if [ -f file ]; then cat file; fi

您必须运行groffwith-U才能使其工作,否则您将收到一条诊断消息:

.pso request not allowed in safer mode

据我所知,没有内置测试可用于检测文件是否存在。

答案2

我相信 groff 1.23.0 有一个新功能可以满足您的用例——请求soquiet。它不会公开文件系统对象的测试,但它确实允许您在未找到文件时尝试获取文件,而不会发出噪音。然后,您可以通过检查文件定义的某些寄存器、宏或字符串是否具有定义来测试是否成功获取。

以下是最新 groff 1.23.0 候选版本的公告。

https://lists.gnu.org/archive/html/groff/2023-02/msg00090.html

相关内容