Puncte:1

Cum să utilizați codurile de stare wget http într-o declarație if else pentru a efectua o acțiune bazată pe codul de stare

drapel fk

Scriu un script care descarcă o grămadă de fișiere, folosesc wget pentru a descărca fișierul și vreau să răspund înapoi la mesajele de stare personalizate ale terminalului pentru fiecare fișier pe baza a 3 scenarii:

  1. Fișierele descărcate cu succes (HTTP/1.1 200 OK)
  2. Fișierele nu s-au schimbat față de cel local (HTTP/1.1 304 nemodificat)
  3. Orice altceva este o descărcare eșuată

Pot să obțin codul de stare și să folosesc awk pentru a izola doar numărul codului de stare (200, 304 etc.) Am următoarele pentru a scoate starea HTTP:

#!/bin/bash
wget -NS http://ipv4.download.thinkbroadband.com/5MB.zip 2>&1 | grep „HTTP/” | awk „{printează $2}”

dacă [ $? = 200]; atunci
echo „Fișier descărcat
"
dacă [ $? = 304]; atunci
echo „Fișierul nu a fost modificat din copia locală”
altfel
    ecou „Ceva a mers prost”
    iesirea 1
fi

Dar aceasta doar imprimă codul de stare http înapoi pe terminal și returnează întotdeauna ultima instrucțiune else.

laptop:~$ ./test.sh
304
Ceva n-a mers bine

Cum trimit ieșirea să ruleze printr-o instrucțiune if else?

djdomi avatar
drapel za
de obicei, ar trebui să folosiți elif pentru a trece o dată, altfel rupeți lanțul if else
Puncte:1
drapel jp

Imprimați codul de stare HTTP la ieșirea standard, dar codul dvs. compară un cod de retur de la wget, nu o valoare tipărită la ieșirea standard. Dacă nu există nicio eroare atunci wget se intoarce 0.

corefile avatar
drapel fk
dreapta - cum pot imprima codul de stare HTTP la ieșirea standard și să îl folosesc în instrucțiunea if
Puncte:0
drapel ru

Scriptul dvs. trebuie să captureze rezultatul primei comenzi. Poate exista o abordare mai elegantă, dar forma de bază:

wget_result="$(wget -NS http://ipv4.download.thinkbroadband.com/5MB.zip 2>&1|grep „HTTP/”|awk „{print $2}”)”

if [ $wget_result = 200 ]; atunci
echo „Fișier descărcat
"
if [ $wget_result = 304 ]; atunci
echo „Fișierul nu a fost modificat din copia locală”
altfel
    ecou „Ceva a mers prost”
    iesirea 1
fi

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.