Tenga en cuenta que, por PIPEser cualquier comando o secuencia de comandos, entonces:
if PIPE ; then
# do one thing if PIPE returned with zero status ($?=0)
else
# do another thing if PIPE returned with non-zero status ($?!=0), e.g. error
fi
Para el registro, [ expr ]es una concha † abreviada para test expr.
Dado que grepdevuelve el estado 0 en caso de una coincidencia, y el estado distinto de cero en caso de que no haya coincidencias, puede usar:
if grep -lq '^MYSQL_ROLE=master' ; then
# do one thing
else
# do another thing
fi
Tenga en cuenta el uso del -lcual solo le importa que el archivo tenga al menos una coincidencia (de modo que grepregrese 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)