grep searchstring / etc / crontab comportamento estranho no script BASH

1

Estou trabalhando em um script BASH que cria backups automatizados por meio do crontab. Eu estou tentando usar

myVARIABLE='grep backup /etc/crontab'

para retornar linhas contendo "backup" se uma entrada já foi feita. Em vez de retornar linhas de /etc/crontab , parece estar retornando a saída de vários comandos ls. Eu executei o comando

grep backup /etc/crontab

da linha de comando e funciona como esperado. Eu também posso grep outros arquivos através do meu script BASH e retorna os resultados esperados também. Alguma idéia de por que /etc/crontab causa problemas no grep dentro de um script? Obrigado!

    
por Becky H. 15.12.2011 / 02:36

1 resposta

3

Isso ocorre porque o / etc / crontab contém caracteres asteriscos ( * ), que, quando não forem ignorados, serão expandidos pelo shell.

Compare a saída desses dois comandos:

echo $myVariable
echo "$myVariable"

O primeiro comando usa a variável unescaped, portanto, os caracteres do asterisco serão expandidos para todos os arquivos no diretório atual. O segundo comando é o que você quer, o conteúdo real do arquivo crontab.

    
por 15.12.2011 / 09:22