如何在clojure中将字符串向量传递给java.shell



我正试图利用(require [clojure.java.shell :refer [sh]])在clojure中执行rsync备份。函数sh将字符串作为args,例如:

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

然而,我发现自己的数据以字符串向量的形式到达sh(例如["ls"-las"/home/"]),这当然失败了。这似乎是一个非常容易解决的问题,但我刚刚开始clojure(以及lisp和函数式编程),我似乎无法让它发挥作用。如何处理传递给sh的向量?

如有任何建议,我们将不胜感激。

听起来您需要使用apply:

(apply sh arg-vector)

apply函数也会在其他LISP中弹出,允许您将参数列表传递给给定的函数。在Clojure中,您不局限于列表,而是任何可seq的对象,包括向量。

最新更新