Puncte:1

Ansible 2.9.21: caracterul de escape nedorit â\â este adăugat în comanda shell

drapel cn

În cartea mea de joc, următorul rând ar trebui să revină 1, iar dacă se întoarce >1, jocul ar trebui să se oprească:

shell: ls -l /opt/tomcat/|grep „[ ]\+{{ newTomcatVer }}$”; eco $?

Jocul meu a eșuat într-adevăr cu această eroare:

"msg": "Există mai mult de o instanță /opt/tomcat/apache-tomcat-8.x.xx pe server01, care se încheie jocul"

După ce rulează din nou în modul de depanare, văd că această comandă shell este reprezentată astfel în rezultatul de depanare:

"cmd": "ls -l /opt/tomcat/|grep \"[ ]\+apache-tomcat-8.5.69$\"; echo $?",

În cele de mai sus, ghilimelele duble sunt eliminate cu \ caracter. Întrebarea este, ce comandă este utilizată de fapt - cea care se află în manualul de joc sau cea pe care o vedem în ieșirea de depanare?

Pentru că dacă rulez comanda care este în notebook, adică fără caractere de escape, rezultatul este 1 cum era de așteptat:

[tomcat@server01 ~]$ ls -l /opt/tomcat/|grep „[ ]\+apache-tomcat-8.5.69$”; eco $?
1

Dar dacă lansez comanda care se află în ieșirea de depanare, primesc asta:

[tomcat@server01 ~]$ ls -l /opt/tomcat/|grep \"[ ]\+apache-tomcat-8.5.69$\"; eco $?
grep: expresie regulată nevalidă
2

Aveți vreo idee cum să rezolv asta?

Puncte:2
drapel cz

Utilizare singur citate în grep comanda.

grep „[ ]\+{{ newTomcatVer }}$”

Când utilizați ghilimele duble, shell-ul va încerca să facă o expansiune variabilă, ceea ce înseamnă că va încerca să înțeleagă $". Aceasta iese ca $\" pentru că coaja nu recunoaște $" ca parametru se poate extinde, așa că încearcă să ghicească ce ai vrut și scapă de ghilimele.

Nu există niciun motiv real pentru a face extinderea parametrilor shell aici, așa că puteți plasa expresia regex între ghilimele simple pentru a rezolva problema. Shell nu va încerca să extindă parametrii și va trata $ literalmente.

grep „[ ]\+{{ newTomcatVer }}$”

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.