我想执行以下命令:
dune exec -- ocaml-print-intf file.ml
并将其输出重定向到file.mli
问题是我不会写
dune exec -- ocaml-print-intf file.ml > file.mli
因为file.mli
被创建然后dune exec -- ocaml-print-intf file.ml
被执行并且它的输出被重定向到file.mli
. 为什么这是个问题?因为它应该生成的签名,file.ml
但它首先检查的是是否已经有一个签名文件(file.mli
在我们的例子中)以及是否有它输出它。
例子:
❯ dune exec -- ocaml-print-intf src/file.ml
val a : int
val b : string
❯ dune exec -- ocaml-print-intf src/file.ml > src/file.mli
❯ cat src/file.mli
❯ dune exec -- ocaml-print-intf src/file.ml
我找到了海绵的解决方案
❯ dune exec -- ocaml-print-intf src/file.ml | sponge src/file.mli
❯ cat src/file.mli
val a : int
val b : string
但我想知道是否有另一种解决方案不需要安装外部软件。