2010-08-20 145 views
2

我做一個clj腳本運行clojure如下。參數傳遞與bash的clojure

java -cp $CLOJURE_JAR:$CLASSPATH clojure.main $1 

問題是$ 1是腳本的名稱,所以我無法通過此參數傳遞參數。

這些替代品可

java -cp $CLOJURE_JAR:$CLASSPATH clojure.main $1 $2 $3 $4 $5 

希望的參數的數量少於4,這可能工作,但我想應該有一個更好的解決了這一點。

比這更好的方法是什麼?

+0

看看clojure-contrib/launchers/bash/clj-env-dir: http://github.com/clojure/clojure-contrib/blob/master/launchers/bash/clj-env-dir – edbond 2010-08-20 14:26:39

回答

4

您可以使用[email protected]通過對你的腳本收到的所有CLI參數:

#!/bin/sh 
java -cp $CLOJURE_JAR:$CLASSPATH clojure.main [email protected] 

如果你想省略一些初始參數,可以使用例如shift,其下降的$1的電流值並且將這個剩餘參數,以便$1假定的$2舊值,$2那的$3等:

#!/bin/sh 
# prints out the first CLI argument, then passes the rest on to clojure.main 
echo $1 
shift 
java -cp $CLOJURE_JAR:$CLASSPATH clojure.main [email protected] 

有關相關信息,請參見題爲Special Parametersbash「 s的manpage。

+1

例如,如果你需要同時下降多次,「shift」也可以引起爭論:例如,「shift 2」。 – 2010-08-20 03:50:08