Score:0

ตรวจสอบไวยากรณ์ httpd จากภายในเชลล์สคริปต์

ธง kz

ไม่สามารถหาได้จากทุกที่รวมถึงในบอร์ดนี้ด้วย ดูแปลกที่ไม่มีใครประสบกับความต้องการแบบเดียวกันนี้มาก่อน สิ่งนี้ควรมีคำตอบที่ง่ายมาก

พยายามใส่ httpd -t ส่งออกไปยังตัวแปรสคริปต์เชลล์ ได้ลองตัวเลือกที่เป็นไปได้ทั้งหมดที่ฉันรู้ สิ่งที่ต้องการ:

r=`httpd -t` หรือ r=$(httpd -t)

พยายามด้วยซ้ำ:

สำหรับฉันใน `httpd -t`

คำสั่งเชลล์ "ปกติ" อื่น ๆ เช่น วันที่ หรือ ฯลฯ ใช้งานได้ แต่ฉันไม่สามารถรับเอาต์พุตธรรมดานั้นเพื่อใส่ในตัวแปร - ไม่สำคัญว่าเอาต์พุตจะเป็นข้อผิดพลาด คำเตือน หรือเพียงแค่ "ตกลงไวยากรณ์"

โดยพื้นฐานแล้วฉันแค่ต้องการมีเชลล์สคริปต์ที่ทำให้แน่ใจว่าการแก้ไขทางโปรแกรมใด ๆ กับการกำหนดค่า httpd ไม่ได้ทำให้ conf เสียหายก่อนที่จะรีสตาร์ทเซิร์ฟเวอร์ ฉันปฏิเสธที่จะเชื่อว่าสิ่งนี้เป็นไปไม่ได้ด้วยเชลล์สคริปต์ ...

ขอบใจ.

Score:1
ธง pl

หากฉันจำได้ถูกต้อง (ตอนนี้ฉันไม่มีเครื่องที่ติดตั้ง Apache) ข้อความเอาต์พุตจากคำสั่งนั้นจะไปที่ สตเดอร์, ไม่ แย่. คุณต้องเปลี่ยนเส้นทางเอาต์พุตเพื่อจับภาพเช่นนี้:

r=$(https -t 2>&1)

ข้างต้นจะรวบรวมทั้งสองอย่าง แย่ และ สตเดอร์ เอาต์พุต ถ้าคุณต้องการเท่านั้น สตเดอร์ ปราศจาก แย่คุณต้องทำสิ่งนี้:

r=$(https -t 2>&1 > /dev/null)

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

รันการทดสอบไวยากรณ์สำหรับไฟล์คอนฟิกูเรชันเท่านั้น โปรแกรมจะออกทันทีหลังจากการทดสอบการแยกวิเคราะห์ไวยากรณ์เหล่านี้โดยมีรหัสส่งคืนเป็น 0 (ตกลงทางไวยากรณ์) หรือรหัสส่งคืนไม่เท่ากับ 0 (ข้อผิดพลาดทางไวยากรณ์)

kz flag
@moche ขอบคุณสำหรับการตอบกลับ httpd -t ไม่ส่งคืนรหัสข้อผิดพลาดใด ๆเพียงแค่สิ่งต่างๆเช่น 'Syntax OK' หรือ 'AH00526: Syntax error on line 60....' แต่ไม่มีสิ่งใดที่สามารถตรวจสอบได้เนื่องจากไม่สามารถจัดเก็บได้ ฉันจะลองเปลี่ยนเส้นทาง ขอบใจ.
pl flag
@pottyear ฉันเพิ่งเพิ่มคำพูดจากคู่มือที่พูดถึงรหัสส่งคืน หากคุณไม่แน่ใจว่าจะใช้รหัสส่งคืนอย่างไร โปรดดูตัวอย่าง https://stackoverflow.com/a/26675771/829970
kz flag
ขอบคุณสำหรับสิ่งนั้น

โพสต์คำตอบ

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