6

Я пытаюсь получить каталог, в котором находится мой скрипт, используя:

scriptdir=`dirname $0`

но это дает мне следующую ошибку:

dirname: invalid option -- 'b'
Try `dirname --help' for more information.

и я попробовал то, что они рекомендовали (т.е. dirname --help), и он сказал, что команда не найдена. Как я могу исправить эту проблему?

Я пытаюсь использовать переменную scriptdir, чтобы я мог скомпилировать следующую программу Java:

java -mx800m -cp "$scriptdir/*" edu.stanford.nlp.parser.lexparser.LexicalizedParser -retainTmpSubcategories -outputFormat "typedDependencies"  -outputFormatOptions "basicDependecies" edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz ./sentences/100000.txt > ./parsedsentences/100000.txt

2 ответа2

7

dirname -- "$0"

- (тире тире) останавливает dirname от обработки любых параметров в аргументе. Всегда указывайте $0 если в имени есть пробелы.

2

используйте кавычки. Это может исправить вашу проблему.

scriptdir=`dirname -- "$0"`

Я лично предпочитаю эту запись в скриптах bash, но она не обязательна:

scriptdir="$(command dirname -- "${0}")"

РЕДАКТИРОВАТЬ:

Вы можете найти ответ в ответах на полное имя сценария и путь $ 0, который не отображается при вызове.

РЕДАКТИРОВАТЬ 2:

Интегрирован правильный ответ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .