espera script para obter seu diretório?

0

um script bash pode ser BASEDIR=$(dirname $0) , mas como faço para esperar script?

Se eu usar BASEDIR=[dirname $argv0] , recebo o erro "nome do comando inválido" dirname ".

    
por Qiulang 18.11.2018 / 08:05

1 resposta

0

Várias operações de arquivo no TCL são organizadas sob o procedimento file(n) que tem um comando dirname .

% expect
expect1.1> file dirname $argv0
.

Note, no entanto, que isto pode não ser definido, válido, nem verificado quanto à validade, dependendo de como o TCL (nem o código shell) é executado, então você pode querer verificar o erro; o diretório também irá variar dependendo de como o código é executado.

% cat dirname
#!/usr/bin/env expect
set basedir [file dirname $argv0]
puts $basedir
% chmod +x dirname
% ./dirname
.
% ~/tmp/dirname
/Users/jhqdoe/tmp
% 

Use file normalize se você sempre quiser um caminho completo.

% expect
expect1.1> set basedir [file normalize [file dirname $argv0]]
/Users/jhqdoe/tmp

Existe também a chamada Tcl_FindExecutable(3) , que expõe o nome do executável ( se disponível) através do comando info nameofexecutable :

% expect
expect1.1> info nameofexecutable
/opt/local/bin/expect
    
por 18.11.2018 / 17:05

Tags