Shell BASH script echo de sortie sur la même ligne
J'ai un simple shell BASH script qui vérifie le code HTTP de la réponse d'une commande curl.
La logique est bien, mais je suis bloqué sur "simplement" l'impression de la "sortie".
Je suis de l'utilisation de GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Je tiens à la sortie de l'URL avec un onglet puis le 404/200/501/502 réponse. Par exemple:
http://www.google.co.uk<tab>200
Je suis aussi une erreur étrange où le "http" de la partie de l'URL est remplacé par le 200/404/501/502. Est-il une base en shell BASH scripting (fonction) dont je ne suis pas à l'aide?
grâce
Miles.
#!/bin/bash
NAMES=`cat $1`
for i in $NAMES
do
URL=$i
statuscode=`curl -s -I -L $i |grep 'HTTP' | awk '{print $2}'`
case $statuscode in
200)
echo -ne $URL\t$statuscode;;
301)
echo -ne "\t $statuscode";;
302)
echo -ne "\t $statuscode";;
404)
echo -ne "\t $statuscode";;
esac
done
OriginalL'auteur chocksaway | 2011-11-22
Vous devez vous connecter pour publier un commentaire.
De réponse vous pouvez utiliser le code
response=$(curl --write-out %{http_code} --silent --output /dev/null servername)
Substitué dans votre boucle ce serait
J'ai nettoyé à l'écho des déclarations aussi, de sorte que pour chaque URL, il y a une nouvelle ligne.
OriginalL'auteur Lewis Norton
essayer
OriginalL'auteur Raihan
Je vais prendre un coup de couteau, mais je pense que ce qui est source de confusion, vous est le fait que
curl
est parfois revenir plus d'un en-tête info (donc plus d'un code d'état), lors de la première demande sera redirigé.Par exemple:
Lorsque vous avez l'impression que, dans une boucle, il semblerait que le deuxième code d'état est devenu partie de l'URL suivante.
Si c'est bien votre problème, il existe plusieurs façons de résoudre cette situation en fonction de ce que vous essayez d'atteindre.
Si vous ne voulez pas suivre les redirections, simple de laisser le
-L
option danscurl
De ne prendre que le dernier code d'état, il vous suffit de canaliser l'ensemble de la commande à
tail -n1
de prendre seul la dernière.Pour afficher tous les codes dans l'ordre, remplacer tous les retours à la ligne (avec des espaces
Par exemple, à l'aide de la 3ème scénario:
OriginalL'auteur Shawn Chin