Zauważ, że aby PIPEbyć dowolnym poleceniem lub sekwencją poleceń, to:
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
Dla przypomnienia, [ expr ]jest to powłoka wbudowane † skrót dla test expr.
Ponieważ grepzwraca status 0 w przypadku dopasowania i niezerowy stan w przypadku braku dopasowań, możesz użyć:
if grep -lq '^MYSQL_ROLE=master' ; then
# do one thing
else
# do another thing
fi
Zauważ, że użycie -lktórego dotyczy tylko tego, że plik ma co najmniej jedno dopasowanie (tak, że greppowraca, gdy tylko znajdzie jedno dopasowanie, bez niepotrzebnego dalszego analizowania pliku wejściowego).
† na niektórych platformach [ expr ]nie jest wbudowana, ale rzeczywisty wykonywalny /bin/[(którego ostatni argument będzie ]), dlatego [ expr ]powinien zawierać spacje wokół nawiasach kwadratowych, a dlaczego to musi być przestrzegane przez jednego z separatorami lista komend ( ;, &&, ||, |, &, Nowa linia)