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

时间:2012-09-10 00:14:00

标签: string vector clojure

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

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

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

非常感谢任何建议。

1 个答案:

答案 0 :(得分:3)

听起来你需要使用apply

(apply sh arg-vector)

apply函数也会在其他LISP中弹出,允许您将参数列表传递给给定函数。在Clojure中,您不仅限于列表,还包括任何seq能够使用的对象,包括向量。