manipulando $ 1 no caminho do diretório do script de shell

0

Eu tenho esta parte do script (bash) que funcionou absolutamente bem até recentemente, mas ele me lança um erro com o arquivo não encontrado ao usar $ 1 para dar o caminho do diretório. A única diferença que eu sei é que parou de funcionar depois que atualizamos para rhel 7.

aqui é a parte do script:

MOUNTINST=/opt/mqm80_Inst1

$1/crtMQdir.ksh $MOUNTINST/bin 755 mqm
$1/crtMQdir.ksh $MOUNTINST/logs 755 mqm
$1/crtMQdir.ksh $MOUNTINST/java/lib/soap 755 mqm

Estou no caminho do diretório correto e também verifiquei se o arquivo existe:

   /var/mqm/trace/WMQUNX8000.02]
    $ ll *crt*
    -rwxr-xr-x. 1 mqm mqm 826 Apr 10  2014 crtMQdir.ksh

Aqui está o erro que recebo:

./test5.sh: line 4: /crtMQdir.ksh: No such file or directory
./test5.sh: line 6: /crtMQdir.ksh: No such file or directory
./test5.sh: line 8: /crtMQdir.ksh: No such file or directory

Estou sentindo falta de algo?

    
por MO12 29.06.2017 / 22:41

1 resposta

0

Certifique-se de fornecer o caminho como um argumento para o script, pois $1 é o primeiro argumento do script.

Se você quiser o caminho e o nome do script (caminho completo do script, por exemplo, /path/to/crtMQdir.ksh ), será necessário usar $0 .

Você também precisa garantir que seu script ksh tenha permissões de execução: chmod +x /path/to/crtMQdir.ksh

Uma maneira alternativa, se você quiser executá-lo a partir do diretório atual, é simplesmente substituir $1 by $PWD em seu script atual. Se você quiser usar o mesmo diretório daquele para esse script, você também pode usar $(dirname $0) em vez de $1 .

    
por 01.07.2017 / 00:35