scriptdir=`dirname $0` が動作しない

scriptdir=`dirname $0` が動作しない

次を使用して、スクリプトが格納されているディレクトリを取得しようとしています。

scriptdir=`dirname $0`

しかし、次のようなエラーが発生します。

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

彼らが推奨したこと (つまりdirname --help) を試しましたが、コマンドが見つからないと言われました。どうすればこの問題を解決できますか?

次の Java プログラムをコンパイルできるように、scriptdir 変数を使用しようとしています。

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"

--(ダッシュ ダッシュ) は、dirname引数内のオプションの処理を停止します。$0名前にスペースがある場合は、常に引用符で囲みます。

答え2

引用符を使用してください。問題が解決する可能性があります。

scriptdir=`dirname -- "$0"`

私は個人的に、bash スクリプトではこの表記法を好みますが、必須ではありません。

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

編集:

答えは、スクリプトのフルネームとパス $0 は呼び出されたときには表示されません

編集2:

正しい答えを統合しました。

関連情報