Передача параметра с bash для clojure - PullRequest
2 голосов
/ 20 августа 2010

Я создаю сценарий clj для запуска clojure следующим образом.

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

Проблема в том, что $ 1 - это имя сценария, поэтому я не могу передать аргумент с этим.

Альтернативы могут быть

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

в надежде, что число аргументов меньше четырех, что может сработать, но я думаю, что должно быть лучшее решение для этого.

Что быбыть лучшим способом, чем это?

1 Ответ

4 голосов
/ 20 августа 2010

Вы можете использовать $@ для передачи всех аргументов CLI, полученных вашим сценарием:

#!/bin/sh
java -cp $CLOJURE_JAR:$CLASSPATH clojure.main $@

Если вы хотите опустить некоторые начальные аргументы, вы можете использовать, например, shift, который сбрасывает текущее значение $1 и сдвигает оставшиеся аргументы так, что $1 принимает старое значение $2, $2, то есть $3 и т. Д.: * 10101 *

#!/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 $@

Дополнительную информацию см. В разделе, озаглавленном Special Parameters на справочной странице bash.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...