Score:1

วิธีใช้รหัสสถานะ wget http ในคำสั่ง if else เพื่อดำเนินการตามรหัสสถานะ

ธง fk

ฉันกำลังเขียนสคริปต์ที่กำลังดาวน์โหลดไฟล์จำนวนมาก ฉันใช้ wget เพื่อดาวน์โหลดไฟล์ และฉันต้องการสะท้อนกลับไปที่ข้อความสถานะที่กำหนดเองของเทอร์มินัลสำหรับแต่ละไฟล์ตาม 3 สถานการณ์:

  1. ดาวน์โหลดไฟล์สำเร็จ (HTTP/1.1 200 OK)
  2. ไฟล์ไม่เปลี่ยนแปลงจากไฟล์ในเครื่อง (HTTP/1.1 304 ไม่ถูกแก้ไข)
  3. สิ่งอื่นใดคือการดาวน์โหลดที่ล้มเหลว

ฉันสามารถรับรหัสสถานะและใช้ awk เพื่อแยกเฉพาะหมายเลขรหัสสถานะ (200, 304 ฯลฯ ) ฉันมีสิ่งต่อไปนี้เพื่อดึงสถานะ HTTP ออกมา:

#!/bin/bash
wget -NS http://ipv4.download.thinkbroadband.com/5MB.zip 2>&1 | เกรป "HTTP/" | awk '{พิมพ์ $2}'

ถ้า [ $? = 200 ]; แล้ว
echo "ดาวน์โหลดไฟล์
"
ถ้า [ $? = 304 ]; แล้ว
echo "ไฟล์ไม่ได้แก้ไขจากสำเนาในเครื่อง"
อื่น
    echo "มีบางอย่างผิดพลาด"
    ทางออก 1
ไฟ

แต่นี่เป็นเพียงการพิมพ์รหัสสถานะ http กลับไปที่เทอร์มินัลและส่งคืนคำสั่งอื่นสุดท้ายเสมอ

แล็ปท็อป:~$ ./test.sh
304
อะไรบางอย่างผิดปกติ

ฉันจะส่งเอาต์พุตเพื่อรันผ่านคำสั่ง if else ได้อย่างไร

djdomi avatar
za flag
โดยปกติคุณควรใช้ elif เพื่อผ่านในครั้งเดียว มิฉะนั้นคุณจะแยกห่วงโซ่ if else
Score:1
ธง jp

คุณกำลังพิมพ์รหัสสถานะ HTTP ไปยังเอาต์พุตมาตรฐาน แต่รหัสของคุณเปรียบเทียบรหัสส่งคืนจาก ว้าวไม่ใช่ค่าที่พิมพ์ไปยังเอาต์พุตมาตรฐาน หากไม่มีข้อผิดพลาดแล้วล่ะก็ ว้าว ผลตอบแทน 0.

corefile avatar
fk flag
ขวา - ฉันจะพิมพ์รหัสสถานะ HTTP ไปยังเอาต์พุตมาตรฐานและใช้ในคำสั่ง if ได้อย่างไร
Score:0
ธง ru

สคริปต์ของคุณต้องบันทึกผลลัพธ์ของคำสั่งแรก อาจมีวิธีการที่หรูหรากว่านี้ แต่รูปแบบพื้นฐาน:

wget_result="$(wget -NS http://ipv4.download.thinkbroadband.com/5MB.zip 2>&1|grep "HTTP/"|awk '{พิมพ์ $2}')"

ถ้า [ $wget_result = 200 ]; แล้ว
echo "ดาวน์โหลดไฟล์
"
ถ้า [ $wget_result = 304 ]; แล้ว
echo "ไฟล์ไม่ได้แก้ไขจากสำเนาในเครื่อง"
อื่น
    echo "มีบางอย่างผิดพลาด"
    ทางออก 1
ไฟ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา