
Я пытаюсь получить каталог, в котором находится мой скрипт, используя:
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
решение1
dirname -- "$0"
The--(тире тире) останавливает dirname
обработку любых опций в аргументе. Всегда заключайте $0
в кавычки, если в имени есть пробелы.
решение2
используйте кавычки. Это может решить вашу проблему.
scriptdir=`dirname -- "$0"`
Лично я предпочитаю такую запись в скриптах bash, но она не обязательна:
scriptdir="$(command dirname -- "${0}")"
РЕДАКТИРОВАТЬ:
Вы можете найти ответ в ответах наполное имя скрипта и путь $0 не видны при вызове.
ПРАВКА 2:
Интегрирован правильный ответ.