Erro com script que chama outro script com shell diferente

Erro com script que chama outro script com shell diferente

Eu tenho um script que roda em sh shell, esse script funciona bem. Mas eu adicionei um script escrito em ksh shell (no cabeçalho do script há #!/bin/ksh), mas toda vez que recebo o erro

./monitor_FMn2.sh[19]: 104:  not found

Que toda vez mudo a segunda linha que acertou o erro A 19ª linha é a linha onde eu chamo o script ksh

if `wc -l < $LOGFILE` > 55;
    then
    logcycle $LOGFILE
fi

ciclo de registroé o script ksh.

Responder1

`wc -l < $LOGFILE` > 55

Executa o comando cujo nome é a saída do wcassunto para split+glob (104 no seu caso) e redireciona sua saída para um arquivo chamado 55no diretório atual. Como não há comando chamado 104 em seu sistema, você recebe esse erro.

Presumivelmente, você queria escrever:

if [ "$(($(wc -l < "$LOGFILE") +0))" -gt 55 ]; then...

Isso executa o comando [aka (em vez de ) para testar se a saída interpretada como uma expressão aritmética (portanto, não reclama de espaços iniciais, se houver) é maior que 55.test104wc -l[

Ou com sintaxe ksh:

if (($(wc -l < "$LOGFILE") +0 > 55)); then...

(a +0cobertura para o caso em que o wc -l < "$LOGFILE"comando não produz saída, como quando $LOGFILEnão pode ser aberto para leitura).

(você também pode remover o 55arquivo vazio criado anteriormente pelo seu script).

informação relacionada