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.