如何在Clojure中将字符串向量传递给Java.shell?

4

我正在尝试使用(require [clojure.java.shell :refer [sh]])在Clojure中执行rsync备份。 函数 sh 接受字符串作为参数,例如:

(sh "ls" "-las" "/home/")

然而,我发现数据作为字符串的向量传递到sh(例如["ls" "-las" "/home/"]),这显然会失败。这似乎是一个非常容易解决的问题,但我刚开始学Clojure(以及Lisp和函数式编程),似乎无法让它起作用。该如何处理向量并传递给sh呢?
非常感谢您的任何建议。
1个回答

4

听起来你需要使用apply函数:

(apply sh arg-vector)
< p > apply 函数在其他 LISPs 中也出现过,它允许您将参数列表传递给给定的函数。在 Clojure 中,您不仅限于列表,还可以使用任何seq-able 对象,包括向量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接