scriptdir = 'dirname $ 0' não está funcionando

6

Estou tentando obter o diretório em que meu script está usando:

scriptdir='dirname $0'

mas isso me dá o seguinte erro:

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

e eu tentei o que eles recomendaram (por exemplo,dirname --help) e ele disse que o comando não foi encontrado. Como posso resolver este problema?

Estou tentando usar a variável scriptdir para poder compilar o seguinte programa 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
    
por kolonel 28.01.2014 / 06:49

2 respostas

7

dirname -- "$0"

O - (dash dash) impede que dirname processe quaisquer opções no argumento. Sempre cite $0 caso haja espaços no nome.

    
por 28.01.2014 / 08:14
2

use aspas. Pode corrigir o seu problema.

scriptdir='dirname -- "$0"'

Eu pessoalmente prefiro essa notação em scripts bash, mas isso não é obrigatório:

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

EDITAR:

Você pode encontrar a resposta nas respostas a nome completo do script e caminho $ 0 não visível quando chamado .

EDIT 2:

Integrou a resposta certa.

    
por 28.01.2014 / 06:59