Kiedy pojawia się nasz serwer, musimy sprawdzić plik, aby zobaczyć, jak serwer jest skonfigurowany.
Chcemy wyszukać następujący ciąg w naszym pliku /etc/aws/hosts.conf:
MYSQL_ROLE=master
Następnie chcemy sprawdzić, czy ten ciąg istnieje, i użyć instrukcji if / else, aby uruchomić jedną z dwóch opcji w zależności od tego, czy ciąg istnieje, czy nie.
Jaka jest składnia BASH dla instrukcji if?
if [ ????? ]; then
#do one thing
else
#do another thing
fi
if
przyjmuje polecenie i sprawdza zwracaną wartość.[
to tylko rozkaz.źródło
Zauważ, że aby
PIPE
być dowolnym poleceniem lub sekwencją poleceń, to:Dla przypomnienia,
[ expr ]
jest to powłoka wbudowane † skrót dlatest expr
.Ponieważ
grep
zwraca status 0 w przypadku dopasowania i niezerowy stan w przypadku braku dopasowań, możesz użyć:Zauważ, że użycie
-l
którego dotyczy tylko tego, że plik ma co najmniej jedno dopasowanie (tak, żegrep
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)źródło
-l
jest zbędny,grep
wraca natychmiast po znalezieniu dowolnego dopasowania z-q
po prostu użyj basha
źródło