Não há nada sintaticamente errado com o fragmento de código, mas é incomum.
Para testar se uma string é encontrada em um arquivo usando grep
e fazer algo, se for esse o caso, use
if grep -qwF ssl_certificate /etc/nginx/conf.d/platform.conf; then
As opções -q
, -w
e -F
tornarão grep
quiet ( -q
) e corresponderão ao padrão fornecido como uma string fixa em vez de uma expressão regular ( -F
). Além disso, -w
fará com que grep
procure uma palavra completa . Nesse caso, a string ssl_certificate3
não corresponderia ao padrão.
grep
retornará um status de saída zero se a string for encontrada no arquivo e o corpo da instrução if
será executado.
A declaração
echo $(somecommand)
é um pouco inútil.
A substituição do comando $(somecommand)
será substituída pela saída de somecommand
e o shell executará a divisão de palavras e geração de nome de arquivo na cadeia resultante (que provavelmente não é desejada). Usar isso com echo
é inútil no sentido de que você poderia ter feito
somecommand
A declaração completa if
:
if grep -qwF ssl_certificate /etc/nginx/conf.d/platform.conf; then
grep -wF ssl_certc /etc/nginx/conf.d/file.conf >/etc/nginx/conf.d/file-certs.conf
fi
(Isto assume que ssl_certc
é uma palavra completa. Remova -w
daquele grep
caso contrário)
Alternativamente, usando a sintaxe de curto-circuito,
grep -qwF ssl_certificate /etc/nginx/conf.d/platform.conf &&
grep -wF ssl_certc /etc/nginx/conf.d/file.conf >/etc/nginx/conf.d/file-certs.conf
Observe que isso substituirá o conteúdo de /etc/nginx/conf.d/file-certs.conf
se esse arquivo existir. Altere >
para >>
para acrescentar ao arquivo, se a sobregravação não for intencional.