Bash 4, expanze a vkládání malých písmen

Vidím, že v Bash> 4.0 se používá proměnná expanze pro malá písmena. Například

echo ${variable,,} 

Čtení manuálové stránky Opravdu nechápu, proč shell převádí řetězec na malá písmena.

Sekvenční výraz má tvar {x..y [.. incr]}, kde x a y jsou buď celá čísla nebo jednotlivé znaky a incr, volitelný přírůstek, je celé číslo. Když jsou zadána celá čísla, výraz se rozšíří na každé číslo mezi x a y, včetně. Dodávaná celá čísla mohou mít předponu „0“, aby každý výraz vynutil stejná šířka. Když buď x nebo y začíná nulou, prostředí se pokusí vynutit, aby všechny generované výrazy obsahovaly stejný počet číslic, v případě potřeby nulovou výplň. Když jsou zadány znaky, výraz se lexikograficky rozšíří na každý znak mezi x a y včetně včetně výchozího národního prostředí C. Pamatujte, že x i y musí být stejného typu. Při zadání přírůstku se použije jako rozdíl mezi každým výrazem. Výchozí přírůstek je 1 o r -1 podle potřeby.

Proč je proměnná převedena na malá písmena?

Odpovědět

Čtete nesprávnou část dokumentace; místo toho se podívejte na rozšíření parametrů shellu .

${parameter^pattern}

${parameter^^pattern}

${parameter,pattern}

${parameter,,pattern}

Toto rozšíření upravuje případ abecedních znaků v parameter. Rozbalí se pattern a vytvoří se vzor stejně jako v rozšíření názvu souboru. Každý znak v rozšířené hodnotě parameter je testován proti pattern a pokud odpovídá vzoru, jeho případ se převede. Vzor by se neměl pokoušet odpovídat více než jednomu znaku. Operátor „^“ převede odpovídající vzor malých písmen na velká; operátor „,“ převede odpovídající velká písmena na malá. Rozšíření „^^“ a „,,“ převádějí každý shodný znak v rozšířené hodnotě; expanze „^“ a „,“ odpovídají a převádějí pouze první znak v rozbalené hodnotě. Pokud je pattern vynechán, bude se s ním zacházet jako s „?“, Které odpovídá každému znaku. Pokud je parameter „@“ nebo „*“, použije se postupně operace úpravy případu na každý poziční parametr a výsledným seznamem bude rozšíření. Pokud parameter je proměnná pole indexovaná pomocí @ nebo *, použije se operace úpravy případu postupně na každého člena pole a výsledným seznamem bude rozšíření.

odpověď

Citujete část pro „Brace Expansion“, „Rozšíření složené závorky“ nezačíná $.

Měli byste provést tento příkaz:

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

Chcete-li najít část „úpravy případu“, která začíná $ (${ ^^ }).

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *