Não é possível executar o script bash através do cron / crontab

1

Eu tenho o cmd abaixo em extract.sh .

Funciona quando executa no terminal para procurar por "ABC123" em orig.txt e saída para result.txt do conteúdo restante após "ABC123" ser encontrado.

Infelizmente quando eu executo o script via cron / crontab, parece ignorar / pular o comando "more" e simplesmente gerar orig.txt para o resultado.txt.

Qualquer ajuda é apreciada.

--------------------- extract.sh ----------------------- ------------------

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
. $HOME/.profile
more +/"ABC123" orig.txt > result.txt

---------------------- crontab ------------------------ -------------------

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * * /root/extractpdf_v3.sh
* * * * * /bin/bash /root/extract.sh
por vd2gl 01.09.2017 / 04:19

1 resposta

2

Você pode usar sed em vez de more , como você mencionou no comentário você precisa do conteúdo do arquivo depois da linha que corresponde à palavra específica. Por exemplo, arquivo de entrada:

Test before
Test match
Test after

comando:

sed -n -e '/match/,$p'

saída:

Test match
Test after
  • -n desativa o comportamento padrão do sed de imprimir cada linha depois de executar seu script,
  • -e indicou um script para sed,
  • /match/,$ é uma seleção de intervalo de endereço (linha) que significa o primeiro linha que corresponde à expressão regular 'match' (como grep) até o final do arquivo ($)
  • p é o comando de impressão que imprime a linha atual.

Para mais detalhes, a resposta original link

    
por 01.09.2017 / 05:49

Tags