scriptdir=`dirname $0` funktioniert nicht

scriptdir=`dirname $0` funktioniert nicht

Ich versuche, das Verzeichnis zu erhalten, in dem sich mein Skript befindet, indem ich Folgendes verwende:

scriptdir=`dirname $0`

aber das gibt mir den folgenden Fehler:

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

und ich habe versucht, was sie empfohlen haben (also dirname --help), und es hieß, Befehl nicht gefunden. Wie kann ich dieses Problem beheben?

Ich versuche, die Variable scriptdir zu verwenden, damit ich das folgende Java-Programm kompilieren kann:

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

Antwort1

dirname -- "$0"

Der--(Bindestrich Bindestrich) verhindert dirnamedie Verarbeitung von Optionen im Argument. Immer Anführungszeichen setzen, $0wenn der Name Leerzeichen enthält.

Antwort2

verwenden Sie Anführungszeichen. Dies könnte Ihr Problem beheben.

scriptdir=`dirname -- "$0"`

Ich persönlich bevorzuge diese Notation in Bash-Skripten, aber sie ist nicht zwingend:

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

BEARBEITEN:

Die Antwort finden Sie möglicherweise in den Antworten aufVollständiger Name und Pfad des Skripts $0 beim Aufruf nicht sichtbar.

BEARBEITEN 2:

Die richtige Antwort integriert.

verwandte Informationen