O caractere de erro de compilação é um script shell unix em falta

5

Eu preciso descobrir 3 arquivos no meu diretório unix UBM, se algum arquivo (CMUSER) estiver disponível significa, então eu preciso sair do meu script unix,

Abaixo está minha lógica de script de shell unix. Por que estou recebendo um erro de compilação?

cd /$UBCS
if [ -f /$UBM/CSUSER.LOCKED -o -f /$UBM/CSUSER.START]
     -o f /$UBM/CSUSER.UPDATE ];
then
   exit;
fi

meu erro de compilação abaixo

Enter script to execute: atm-autopbf
/rd23/gilbat/R2016/ubcs/atm-autopbf[38]: test: 0403-021 **A ] character is missing**
.
/rd23/gilbat/R2016/ubcs/atm-autopbf**[39]: -o:  **not found.****

 Not running C/S (SHELMATE MAXSESSIONS=0). Aborting ...

Press <ENTER> to continue:
    
por Joseph Chennai 11.02.2017 / 09:52

1 resposta

1

Seu script,

cd /$UBCS
if [ -f /$UBM/CSUSER.LOCKED -o -f /$UBM/CSUSER.START]
     -o f /$UBM/CSUSER.UPDATE ];
then
   exit;
fi

tem um erro de sintaxe. Você desequilibrou [ ... ] na declaração if. Você também precisa de um espaço entre /$UBM/CSUSER.START e o seguinte ] .

#!/bin/sh

cd "/$UBCS" || exit 1

if [ -f "/$UBM/CSUSER.LOCKED" ] ||
   [ -f "/$UBM/CSUSER.START"  ] ||
   [ -f "/$UBM/CSUSER.UPDATE" ]
then
   exit
fi

Tente colar seus scripts no ShellCheck: link

Além disso, você não obtém erros de compilação para scripts de shell (pois eles não são compilados). Eles são erros parsing .

    
por 11.02.2017 / 10:50