Bash 4, extinderea și punerea la litere mici

Văd că în Bash> 4.0 variabila expansiune este utilizată pentru a scădea o variabilă. De exemplu

echo ${variable,,} 

Citind pagina de manual nu știu de ce shell-ul transformă șirul în minuscule.

O expresie de secvență ia forma {x..y [.. incr]}, unde x și y sunt fie numere întregi sau caractere simple, iar incr, un increment opțional, este un număr întreg. Când sunt furnizate numere întregi, expresia se extinde la fiecare număr între x și y, inclusiv. Numerele întregi furnizate pot fi prefixate cu „0” pentru a forța fiecare termen să aibă aceeași lățime. Când x sau y începe cu un zero, shell-ul încearcă să forțeze toți termenii generați să conțină același număr de cifre, completând zero acolo unde este necesar. Când sunt furnizate caractere, expresia se extinde la fiecare caracter lexicografic între x și y, inclusiv, utilizând setările locale implicite C. Rețineți că atât x cât și y trebuie să fie de același tip. Când este furnizat incrementul, acesta este utilizat ca diferență între fiecare termen. Incrementul implicit este 1 o r -1 după caz.

De ce variabila este convertită în minuscule?

Răspuns

Citești secțiunea greșită a documentației; uitați-vă la extinderea parametrului shell .

${parameter^pattern}

${parameter^^pattern}

${parameter,pattern}

${parameter,,pattern}

Această extindere modifică cazul caracterelor alfabetice din parameter. pattern este extins pentru a produce un model la fel ca în extinderea numelui de fișier. Fiecare caracter din valoarea extinsă a parameter este testat în funcție de pattern și, dacă se potrivește cu modelul, majuscula este convertită. Modelul nu trebuie să încerce să se potrivească mai mult de un personaj. Operatorul „^” convertește modelul de potrivire a literelor mici în majuscule; operatorul „,” convertește literele majuscule potrivite în minuscule. Extensiile „^^” și „,,” convertesc fiecare caracter asociat în valoarea extinsă; expansiunile „^” și „,” se potrivesc și convertesc doar primul caracter din valoarea extinsă. Dacă pattern este omis, acesta este tratat ca un „?”, Care se potrivește cu fiecare caracter. Dacă parameter este ‘@’ sau ‘*’, operația de modificare a cazurilor se aplică pe rând la fiecare parametru pozițional, iar extinderea este lista rezultată. Dacă parameter este o variabilă de matrice subscrisă cu @ sau *, operația de modificare a cazurilor se aplică la rândul său fiecărui membru al matricei, iar extinderea este lista rezultată.

Răspuns

Citiți partea pentru „Extindere bretele”, O „expansiune Brace” nu începe cu un $.

Ar trebui să executați această comandă:

LESS=+/"\{parameter\^pattern\}" man bash 

Pentru a găsi partea din „modificarea cazului” care începe cu un $ (${ ^^ }).

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *