Bash boucle while avec chaîne de deux conditions
J'ai couru dans un peu d'un problème avec mon script bash. Mon script entre autres choses, est le démarrage d'un serveur qui prend un certain temps pour y aller. Afin de lutter contre le long de démarrage, j'ai mis dans une boucle while qui interroge le serveur pour voir si elle fonctionne encore.
while [ $running -eq 0 ]; do
echo "===" $response "===";
if [ "$response" == "" ] || [ "$response" == *"404 Not Found"* ]; then
sleep 1;
response=$(curl $ip:4502/libs/granite/core/content/login.html);
else
running=1;
fi
done
Lors de la sortie de la boucle $réponse est égale à la "404" de la chaîne. Si c'est le cas, la chose doit toujours être dans la boucle, n'est-ce pas? Semble que ma boucle est de quitter prématurément.
Joe
OriginalL'auteur Joe Andolina | 2013-07-09
Vous devez vous connecter pour publier un commentaire.
[ .. ]
ne correspond pas par glob. Utilisation[[ .. ]]
:[[ ]]
est un bash extension, alors assurez-vous que le script commence par#!/bin/bash
, pas#!/bin/sh
. Il y a des façons de faire un test équivalent dans la plaine du shell POSIX syntaxe, mais ils ne sont pas presque aussi propre.Merci pour la réponse, mais même avec vos modifications, je suis toujours de voir la boucle de la sortie alors que la réponse a la 404 de la chaîne.
Juste une pensée - avez-vous vérifié avec un autre site qui donne certainement une erreur 404?
Ma sortie de la boucle est entouré de === et ma sortie après la boucle est entouré de +++,
=== <html><head><title> 404 Not Found </title>... ===
, après+++ <html><head><title> 404 Not Found </title>... +++
,Votre echo déclaration détruit les espaces, donc si le texte comporte par exemple deux espaces ou un no-break space, il affiche la même chose mais pas de match.
echo "$response" > file
avec des citations vous permettrait de mener l'enquête.OriginalL'auteur that other guy
Je ne sais pas pourquoi mon script d'origine a été un échec. Je suppose que ça a à voir avec le fait que j'ai été de comparer par rapport à HTML. Pour obtenir mon script je me suis retrouvé à l'aide de la longueur de la chaîne plutôt que le contenu. L'utilisation de la suite comparateur a tout qui fonctionne à merveille.
Merci pour l'aide,
Joe
OriginalL'auteur Joe Andolina