scriptdir=`dirname $0` не работает

scriptdir=`dirname $0` не работает

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

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:

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

Связанный контент