grep funciona bem na linha de comando mas não retorna nada no script

2

Estou tentando escrever um script pequeno para obter uma lista de arquivos que correspondem a determinados critérios em um arquivo.

#!/bin/sh
cd /var/www_data/patch/
grep --include=\*.{php,ini,conf,sh} -ril -P "'([\d\w\-\_\.]+)(@domain.com)'" "/var/www_data/something/" 2>&1 > mails

A linha grep funciona perfeitamente na linha de comando, mas se eu a iniciar via script, o arquivo resultante terá tamanho de 0 bytes. Alguma idéia do porquê isso está acontecendo?

    
por Igor Yavych 07.09.2014 / 13:13

2 respostas

4

Encontrei meu próprio erro. Era para ser #!/bin/bash . Obrigado ao @steeldriver pela dica

    
por 07.09.2014 / 15:39
0

Para habilitar a expansão do shell dentro de um script você tem que passar uma opção de linha de comando para o bash, isso pode ser feito no próprio script:

#! /bin/bash
set -B   #enables expansion
set -X   #enables debugging

Com a primeira opção, tudo será passado para o shell como se fosse escrito na linha de comando, a segunda opção gerará muitos resultados, bastante útil para ver o que acontece, mas você certamente deseja desabilitá-lo uma vez que seu script está funcionando corretamente.

    
por 07.09.2014 / 23:45