Zauważ, że aby PIPE
być 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ż grep
zwraca 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 -l
którego dotyczy tylko tego, że plik ma co najmniej jedno dopasowanie (tak, że grep
powraca, 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)