Quando nosso servidor é instalado, precisamos verificar um arquivo para ver como o servidor está configurado.
Queremos procurar a seguinte string dentro do nosso arquivo /etc/aws/hosts.conf:
MYSQL_ROLE=master
Em seguida, queremos testar se essa cadeia existe e usar uma instrução if / else para executar uma das duas opções, dependendo da existência ou não da cadeia.
Qual é a sintaxe do BASH para a instrução if?
if [ ????? ]; then
#do one thing
else
#do another thing
fi
if
toma um comando e verifica seu valor de retorno.[
é apenas um comando.fonte
Observe que, por
PIPE
ser qualquer comando ou sequência de comandos, então:Para o registro,
[ expr ]
é um shell embutido † abreviação detest expr
.Como
grep
retorna com status 0 no caso de uma correspondência e status diferente de zero no caso de nenhuma correspondência, você pode usar:Observe que o uso
-l
apenas se importa com o fato de o arquivo ter pelo menos uma correspondência (para quegrep
retorne assim que encontrar uma correspondência, sem continuar desnecessariamente analisando o arquivo de entrada).† em algumas plataformas
[ expr ]
não é um embutido, mas um executável real/bin/[
(cujo argumento último será]
), razão pela qual[ expr ]
deve conter espaços em branco ao redor dos colchetes, e por que deve ser seguido por um da lista de comando separadores (;
,&&
,||
,|
,&
, nova linha)fonte
-l
é redundante,grep
retorna imediatamente após encontrar qualquer correspondência com-q
basta usar o bash
fonte