Encontrei meu próprio erro. Era para ser #!/bin/bash
. Obrigado ao @steeldriver pela dica
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?
Encontrei meu próprio erro. Era para ser #!/bin/bash
. Obrigado ao @steeldriver pela dica
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.
Tags bash grep shell-script