2010-08-20 59 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