Lorsque notre serveur arrive, nous devons vérifier un fichier pour voir comment le serveur est configuré.
Nous voulons rechercher la chaîne suivante dans notre fichier /etc/aws/hosts.conf:
MYSQL_ROLE=master
Ensuite, nous voulons tester si cette chaîne existe et utiliser une instruction if / else pour exécuter l'une des deux options selon que la chaîne existe ou non.
Quelle est la syntaxe BASH pour l'instruction if?
if [ ????? ]; then
#do one thing
else
#do another thing
fi
if
prend une commande et vérifie sa valeur de retour.[
est juste une commande.la source
Notez que, pour
PIPE
être une commande ou une séquence de commandes, alors:Pour mémoire,
[ expr ]
est un raccourci shell intégré † pourtest expr
.Étant donné que les
grep
retours avec le statut 0 en cas de correspondance et le statut différent de zéro en cas de non-correspondance, vous pouvez utiliser:Notez que l'utilisation de
-l
qui ne se soucie que du fichier ayant au moins une correspondance (de sorte quegrep
retourne dès qu'il trouve une correspondance, sans continuer inutilement à analyser le fichier d'entrée.)† sur certaines plates - formes
[ expr ]
ne sont pas une commande interne, mais un exécutable réel/bin/[
(dont le dernier argument sera]
), ce qui explique pourquoi[ expr ]
devrait contenir des espaces autour des crochets, et pourquoi il doit être suivi par l' un des séparateurs de liste de commande (;
,&&
,||
,|
,&
, nouvelle ligne)la source
-l
est redondant,grep
revient immédiatement après avoir trouvé un match avec-q
utilise juste bash
la source