Script - Caminhos absolutos e relativos

0

Estou tentando executar um aplicativo mono, sem exigir que o usuário digite 'mono filename'. É apenas uma linha de código:

mono ./Bin/jobshop.exe $1 $2 $3 $4 $5 $6 $7 $8 $9

Funciona muito bem, desde que eu o chame do diretório correto. Mas se meu diretório atual não é exatamente onde o script está - ele falha porque o ./Bin é relativo ao diretório atual. Eu quero que seja relativo à localização do script.

Descobri que consegui obter a localização do script usando

echo dirname "$(readlink -f "$0")"/Bin/jobshop.exe $1 $2 $3 $4 $5 $6 $7 $8 $9

Isso é exibido corretamente na tela; mas não consigo descobrir como colocá-lo no meu primeiro script, de modo que o mono execute esse valor.

Estou usando o 'tcsh', no entanto, prefiro uma resposta independente para qualquer shell.

Eu só quero correr 'mono' + 'dirname "$ (readlink -f" $ 0 ")" / Bin / jobshop.exe $ 1 $ 2 $ 3 $ 4 $ 5 $ 6 $ 7 $ 8 $ 9'

Mas não consigo acertar.

    
por Rob P. 07.03.2014 / 17:50

2 respostas

2

Tente isto:

#!/bin/bash

path=$(dirname $(readlink -e -- "$0"))

/path/to/mono "$path"/Bin/jobshop.exe "$@"
  • Você deve salvar o caminho do seu programa na variável $ path.
  • Use "$@" em vez de listar todos os argumentos da linha de comando.
por 07.03.2014 / 17:58
2

Você poderia dizer:

mono $(dirname "$(readlink -f "$0")")/Bin/jobshop.exe $1 $2 $3 $4 $5 $6 $7 $8 $9
    
por 07.03.2014 / 17:59

Tags