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 wc
assunto para split+glob (104 no seu caso) e redireciona sua saída para um arquivo chamado 55
no 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.test
104
wc -l
[
Ou com sintaxe ksh:
if (($(wc -l < "$LOGFILE") +0 > 55)); then...
(a +0
cobertura para o caso em que o wc -l < "$LOGFILE"
comando não produz saída, como quando $LOGFILE
não pode ser aberto para leitura).
(você também pode remover o 55
arquivo vazio criado anteriormente pelo seu script).