Eu gostaria de testar o software em desenvolvimento executando um script específico, digamos script file.ext
. Mas me disseram que não tenho permissão para executar o script se um arquivo de configuração, digamos file.conf
, contiver uma string específica (não um comentário com um # inicial) que indica que o sistema está em modo de produção.
Então, no bash, como posso fazer algo como
Se file1.conf
contiver uma string in production
e essa string não estiver no formato something ... # something in production something
, execute script file1.ext
.
Ou, de alguma forma, posso receber um alerta toda vez que o arquivo designado contiver a string in production
, não em um comentário?
Acho que preciso de alguma forma usar o comando inotifywait
. Também seria bom ter um script que não apenas verificasse o arquivo, file1.conf
mas alertasse toda vez que algum arquivo com extensão .conf
mostrasse que estou em modo de produção.
Uma maneira de conseguir isso é com
grep
, por exemplo,A parte por trás de
||
só é executada se a parte anterior a ela não existir com código de saída 0 egrep
tiver código de saída 0 somente se encontrar seu padrão (o primeiro argumento).Eu escolhi um padrão simples
"^[^#]* in production "
. O caractere^
representa o início da linha,[^#]
representa qualquer caractere exceto#
e o quantificador*
diz que pode haver qualquer número deles. O restante do padrão é apenas o texto que você espera para marcar o modo de produção.Para evitar que toda a saída
grep
esteja produzindo, você pode enviá-la para/dev/null
:Se você quiser imprimir uma mensagem, se estiver em modo de produção e o script não estiver sendo executado, você pode fazer