Puncte:0

verificarea sintaxei httpd dintr-un script shell

drapel kz

nu am putut găsi asta nicăieri, inclusiv pe aceste plăci. pare ciudat că nimeni nu a mai avut aceeași nevoie până acum. acesta ar trebui să aibă un răspuns foarte simplu.

încercând să pună httpd -t ieșire într-o variabilă de script shell. am încercat toate opțiunile posibile pe care le cunosc. chestii precum:

r=`httpd -t` sau r=$(httpd -t)

chiar a incercat:

pentru eu în `httpd -t`

orice altă comandă shell „normală”, cum ar fi Data sau ls, etc funcționează, dar nu pot obține acea ieșire simplă să fie introdusă într-o variabilă - nu contează dacă rezultatul este o eroare, avertisment sau doar "Sintaxă OK".

în esență, vreau doar să am un script shell care să se asigure că orice modificări programatice ale configurației httpd nu au stricat conf înainte de a reporni serverul. Refuz să cred că acest lucru nu este posibil cu un script shell...

Mulțumiri.

Puncte:1
drapel pl

Dacă îmi amintesc corect (nu am o mașină cu Apache instalat în fața mea în acest moment), textul de ieșire de la acea comandă va fi stderr, nu stdout. Trebuie să redirecționați rezultatul pentru a o captura, astfel:

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

Cele de mai sus le vor colecta pe ambele stdout și stderr ieșire. Daca vrei doar stderr fără stdout, trebuie să faci ceva de genul acesta:

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

Cu toate acestea, de fapt, nu aveți nevoie de rezultatul textului pentru a face ceea ce doriți. Dacă tot ce trebuie să știți este dacă există o eroare sau nu, ar trebui să verificați codul de retur. Dacă configurația nu are erori, va returna 0, dacă există o eroare, va returna un alt număr. De la om pagina pentru httpd:

Rulați teste de sintaxă numai pentru fișierele de configurare. Programul se iese imediat după aceste teste de analiză a sintaxelor fie cu un cod de întoarcere de 0 (Sintaxă OK), fie cu un cod de returnare diferit de 0 (Eroare de sintaxă).

drapel kz
@moche multumesc pentru raspuns. httpd -t nu returnează niciun cod de eroare.doar chestii precum „Sintaxă OK” sau „AH00526: Eroare de sintaxă pe linia 60....”, dar niciuna dintre acestea nu poate fi verificată, deoarece nu poate fi stocată. voi incerca redirectionarea. Mulțumiri.
drapel pl
@pottyear Tocmai am adăugat un citat din manual care vorbește despre codurile de returnare. Dacă nu sunteți sigur cum să utilizați codurile de returnare, consultați https://stackoverflow.com/a/26675771/829970 pentru un exemplu.
drapel kz
mulțumesc pentru că

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.