Bash 4, kibővítés és kisbetűk elhelyezése

Úgy látom, hogy a Bash> 4.0-ban a változó kibővítését használják egy változó kisbetűvé. Például

echo ${variable,,} 

A kézikönyv olvasása Nem igazán értem, hogy a shell miért konvertálja a karakterláncot kisbetűvé.

A szekvencia kifejezés formátuma {x..y [.. incr]}, ahol x és y vagy egész számok vagy egyes karakterek, és az incr (opcionális növekmény) egész szám. Amikor egész számokat adunk meg, a kifejezés x és y között minden számra kibővül. A megadott egész számok előtagja lehet „0”, hogy az egyes kifejezéseket a azonos szélességű. Ha x vagy y nullával kezdődik, a shell megpróbálja az összes generált kifejezést ugyanannyi számjegyre kényszeríteni, szükség esetén nulla kitöltéssel. Ha karaktereket adunk meg, akkor a kifejezés x és y, beleértve az alapértelmezett C területi beállításokat. Vegye figyelembe, hogy x-nek és y-nek is ugyanannak a típusnak kell lennie. Ha az inkrementumot megadják, akkor azt az egyes kifejezések különbségeként használják. Az alapértelmezett növekmény 1 o r -1 értelemszerűen.

Miért alakul a változó kisbetűvé?

Válasz

A dokumentáció rossz részét olvassa el; inkább nézze meg a shell paraméter kibővítését .

${parameter^pattern}

${parameter^^pattern}

${parameter,pattern}

${parameter,,pattern}

Ez a kiterjesztés módosítja a parameter alfabetikus karakterek esetét. A pattern kibővül, és ugyanolyan mintát állít elő, mint a fájlnév kiterjesztésében. A parameter kiterjesztett értékének minden karakterét teszteljük a pattern -vel szemben, és ha megfelel a mintának, akkor a kis- és nagybetűket konvertálja. A minta nem próbálhat meg egynél több karaktert egyeztetni. A ’^’ operátor a kisbetűknek megfelelő mintát nagybetűvé alakítja; a ’,’ operátor az egyező nagybetűket kisbetűvé alakítja. A ’^^’ és a ‘,,’ kibővítés a kibővített érték mindegyik egyező karakterét átalakítja; a ’^’ és ’,’ kiterjesztések egyeznek és csak a kibővített érték első karakterét konvertálják. Ha a pattern szót kihagyja, akkor azt úgy kezeljük, mint egy „?” Szót, amely minden karakterhez illeszkedik. Ha a parameter értéke „@” vagy „*”, akkor az esetmódosítási műveletet sorra alkalmazzák az egyes pozícióparaméterekre, és a kibővítés az eredménylista. Ha a parameter egy tömb változó, amely @ vagy * betűvel van indexelve, akkor az esetmódosítási műveletet sorban alkalmazzuk a tömb minden tagjára, és a kiterjesztés az eredménylista.

Válasz

A “Brace Expansion” részt idézi, A “zárójel kiterjesztése” nem a $ betűvel kezdődik.

Futtassa a következő parancsot:

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

Az “esetmódosítás” $ (${ ^^ }) kezdetű részének megkeresése.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük