Điểm:0

kiểm tra cú pháp httpd từ bên trong tập lệnh Shell

lá cờ kz

không thể tìm thấy điều này ở bất cứ đâu kể cả trên bảng này. có vẻ lạ là chưa từng có ai gặp phải nhu cầu tương tự trước đây. điều này nên có một câu trả lời rất đơn giản.

cố gắng đưa httpd -t xuất thành một biến shell script. đã thử tất cả các tùy chọn có thể mà tôi biết. những thứ như:

r=`httpd -t` hoặc r=$(httpd -t)

thậm chí đã thử:

cho tôi trong `httpd -t`

bất kỳ lệnh shell "bình thường" nào khác như ngày tháng hoặc ls, v.v. hoạt động nhưng tôi không thể đưa đầu ra đơn giản đó vào một biến - không quan trọng nếu đầu ra là lỗi, cảnh báo hay chỉ là "Cú pháp OK".

về cơ bản, tôi chỉ muốn có một tập lệnh shell để đảm bảo mọi chỉnh sửa theo chương trình đối với cấu hình httpd không làm hỏng conf trước khi khởi động lại máy chủ. tôi từ chối tin rằng điều này là không thể với tập lệnh Shell ...

cảm ơn.

Điểm:1
lá cờ pl

Nếu tôi nhớ chính xác (hiện tại tôi không có máy cài đặt Apache trước mặt), văn bản đầu ra từ lệnh đó sẽ là tiêu chuẩn, không phải tiêu chuẩn. Bạn cần chuyển hướng đầu ra để nắm bắt nó, như thế này:

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

Ở trên sẽ thu thập cả hai tiêu chuẩntiêu chuẩn đầu ra. Nếu bạn chỉ muốn tiêu chuẩn không có tiêu chuẩn, bạn cần phải làm một cái gì đó như thế này:

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

Tuy nhiên, bạn không thực sự cần đầu ra văn bản để làm những gì bạn muốn. Nếu tất cả những gì bạn cần biết là có lỗi hay không, bạn chỉ cần kiểm tra mã trả về. Nếu cấu hình không có lỗi, nó sẽ trả về 0, nếu có lỗi, nó sẽ trả về một số khác. Từ Đàn ông trang cho httpd:

Chỉ chạy kiểm tra cú pháp cho các tệp cấu hình. Chương trình ngay lập tức thoát sau các kiểm tra phân tích cú pháp này với mã trả về là 0 (Cú pháp OK) hoặc mã trả về không bằng 0 (Lỗi cú pháp).

lá cờ kz
@moche cảm ơn vì đã trả lời. httpd -t không trả lại bất kỳ mã lỗi nào.chỉ những thứ như 'Syntax OK' hoặc 'AH00526: Syntax error on line 60....' nhưng không cái nào trong số đó có thể được kiểm tra vì nó không thể được lưu trữ. tôi sẽ thử chuyển hướng. cảm ơn.
lá cờ pl
@pottyear Tôi vừa thêm một trích dẫn từ sách hướng dẫn nói về mã trả lại. Nếu bạn không chắc chắn về cách sử dụng mã trả về, hãy xem https://stackoverflow.com/a/26675771/829970 để biết ví dụ.
lá cờ kz
cảm ơn vì điều đó

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.