Cuando nuestro servidor aparece, necesitamos verificar un archivo para ver cómo está configurado el servidor.
Queremos buscar la siguiente cadena dentro de nuestro archivo /etc/aws/hosts.conf:
MYSQL_ROLE=master
Luego, queremos probar si esa cadena existe y usar una instrucción if / else para ejecutar una de las dos opciones dependiendo de si la cadena existe o no.
¿Cuál es la sintaxis de BASH para la instrucción if?
if [ ????? ]; then
#do one thing
else
#do another thing
fi
if
toma un comando y verifica su valor de retorno.[
Es solo un comando.fuente
Tenga en cuenta que, por
PIPE
ser cualquier comando o secuencia de comandos, entonces:Para el registro,
[ expr ]
es una concha † abreviada paratest expr
.Dado que
grep
devuelve el estado 0 en caso de una coincidencia, y el estado distinto de cero en caso de que no haya coincidencias, puede usar:Tenga en cuenta el uso del
-l
cual solo le importa que el archivo tenga al menos una coincidencia (de modo quegrep
regrese tan pronto como encuentre una coincidencia, sin continuar analizando innecesariamente el archivo de entrada).† en algunas plataformas
[ expr ]
no es una orden interna, sino un ejecutable real/bin/[
(cuyo argumento última será]
), por lo que[ expr ]
debe contener espacios en blanco alrededor de los corchetes, y por qué debe ser seguido por uno de los separadores de lista de comandos (;
,&&
,||
,|
,&
, nueva línea)fuente
-l
es redundante,grep
regresa inmediatamente al encontrar una coincidencia con-q
solo usa bash
fuente