Ошибка функции оболочки Bash: команда не найдена - PullRequest
3 голосов
/ 10 марта 2010

Я новичок в bash, поэтому, пожалуйста, потерпите меня, если это глупый вопрос:

То, что я на самом деле хочу ввести в оболочке, выглядит так:

javac -classpath "emarket.jar" Testclient.java -Xlint:unchecked

Дело в том, что если я вручную ввожу вышеупомянутую строку в bash, она выполняется без ошибок. Однако, если я создаю настроенную функцию в .bashrc, как это:

function compile() { 'javac -classpath "emarket.jar" '$@'.java -Xlint:unchecked';}

И введите эту команду в bash:

compile Testclient

Ошибка доходит до следующего:

bash: javac -classpath "emarket.jar" Testclient.java -Xlint: не проверено: команда не найдена

Я считаю, что функция compile () в .bashrc должна генерировать ту же команду в bash, но я действительно не могу пройти через это, кто-нибудь может мне помочь? Большое спасибо заранее!

Ответы [ 2 ]

8 голосов
/ 10 марта 2010

удаляет одинарные кавычки, окружающие всю команду, и использует двойные кавычки вокруг $@

function compile() { 
  javac -classpath "emarket.jar" "$@".java -Xlint:unchecked;
}

см. здесь для примеров цитирования переменных.

1 голос
/ 10 марта 2010

Проблема в кавычках ' в вашей функции компиляции. Это заставляет оболочку не разбивать объекты на пробелы и обрабатывать всю строку как команду (а не первое слово как команду, а остальные как аргументы.) Удалите их, и это должно сработать

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