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í sepattern
a vytvoří se vzor stejně jako v rozšíření názvu souboru. Každý znak v rozšířené hodnotěparameter
je testován protipattern
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 jepattern
vynechán, bude se s ním zacházet jako s „?“, Které odpovídá každému znaku. Pokud jeparameter
„@“ nebo „*“, použije se postupně operace úpravy případu na každý poziční parametr a výsledným seznamem bude rozšíření. Pokudparameter
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á $
(${ ^^ }
).