我编写了一个汇编.dot文件的程序,并希望使用Clojure的sh
来编写命令。具体来说,我使用以下函数来执行此操作:
(defn compile-graphviz
"Dumps graphviz-string to a file, then compiles it using dot."
[graphviz-string]
(do
(spit "./tree.dot" graphviz-string)
(sh "dot -Tpng \"/.tree.dot\" -o\"/.tree.png\"")))
但是,当我运行它时,第二部分失败,在REPL上给出以下错误消息:
IOException error=2, No such file or directory java.lang.UNIXProcess.forkAndExec (UNIXProcess.java:-2)
我查看了sh
的文档和示例,我无法理解为什么这不起作用。我错过了什么?
答案 0 :(得分:5)
根据the documentation,sh
使用execve语义:
(sh "dot" "-Tpng" "/.tree.dot" "-o" "/.tree.png")