Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Informace
Pole hodnot
6. června 2002, 00.00 | Shell umožňuje práci s proměnnými, které obsahují pole hodnot; v tomto dílu si ukážeme základní služby, určené pro takovéto využití.
Pole hodnotShell umožňuje práci s proměnnými, které obsahují pole hodnot; v tomto dílu si ukážeme základní služby, určené pro takovéto využití.
Základy práce s poli
Pole hodnot můžeme do proměnné uložit pomocí závorek:
410 /tmp> x=(a b c d e f)
411 /tmp>
Pro přístup k jednotlivým hodnotám z pole se používá standardní index v hranatých závorkách. Programátoři v C a podobných jazycích si ovšem musí dát pozor na to, že pole jsou standardně indexována od jedničky:
411 /tmp> echo $x[1]
a
412 /tmp>
Mimochodem, uvnitř hranatých závorek může být libovolný aritmetický výraz, a zsh jej vyhodnotí stejně, jako kdyby byl umístěn ve dvojitých závorkách ((...)).
Můžeme také použít dvojici výrazů, a zsh vrátí všechny prvky pole mezi zadanými indexy:
412 /tmp> echo $x[2,4]
b c d
413 /tmp>
Záporný index můžeme použít pro "daný počet prvků od konce", a můžeme také obě možnosti kombinovat. Kompletní rozsah [1,-1] můžeme vynechat (nebo můžeme na místě indexu použít znaky "*" či "@"; to si ukážeme za chvilku):
413 /tmp> echo $x[-2]
e
414 /tmp> echo $x[2,-2]
b c d e
415 /tmp> echo $x
a b c d e f
416 /tmp>
Samozřejmě, že do prvků pole můžeme dosazovat nové hodnoty:
416 /tmp> x[2]=dvojka
417 /tmp> echo $x
a dvojka c d e f
418 /tmp>
Vkládání a odebírání hodnot
Na levé straně přiřazovacího příkazu můžeme klidně použít i interval indexů; uvedená část pole se prostě nahradí nově zadanými prvky. Následující příkaz proto nevytvoří vnořené pole na druhém místě od konce; namísto toho do pole vloží nové prvky:
418 /tmp> x[-2]=(dvojka od konce)
419 /tmp> echo $x
a dvojka c d dvojka od konce f
420 /tmp> echo $x[-2]
konce
421 /tmp>
Zde může mít smysl zadat "nesmyslný" rozsah indexů — chceme-li pouze vložit nové hodnoty, aniž bychom přepisovali kteroukoli z již existujících:
421 /tmp> x[4,3]=CTYRKA
422 /tmp> echo $x
a dvojka c CTYRKA d dvojka od konce f
423 /tmp>
Na stejném principu (záměny zadané části pole novou hodnotou) můžeme existující hodnoty rušit:
424 /tmp> x[4,-2]=()
425 /tmp> echo $x
a dvojka c f
426 /tmp>
Příště budeme ještě v práci s poli pokračovat!
Ukážeme si řadu dalších triků, jež práci s poli v shellu dokáží velmi zásadním způsobem usnadnit.
Obsah seriálu (více o seriálu):
- Obcování s ďáblem
- Obcování s ďáblem 2 - základy
- Obcování s ďáblem 3 - Práce se soubory
- Obcování s ďáblem 4 - Další práce se soubory
- Obcování s ďáblem 5 - Stále soubory, hlavně linky
- Obcování s ďáblem 6: Pár zbývajících drobností
- Obcování s ďáblem 7: Samá voda, přihořívá, hoří!
- Obcování s ďáblem 8: Jak se do shellu volá, tak se program ozývá
- Obcování s ďáblem 9: Nové finty na programy
- Obcování s ďáblem 10: Do fronty, pánové, do fronty!
- Obcování s ďáblem 11: Standardní vstup a výstup
- Obcování s ďáblem 13: Další triky
- Obcování s ďáblem 14: Vyšší škola hledání souborů
- Obcování s ďáblem 15: Příkaz find stokrát jinak
- Obcování s ďáblem 16: Co se ještě dá uvařit z příkazu find
- Obcování s ďáblem 17: Regulární výrazy
- Obcování s ďáblem 18: Speciální regulární výrazy
- Obcování s ďáblem 19: Skládání regulárních výrazů
- Obcování s ďáblem 20: Regulární výrazy se zpětnými odkazy
- Obcování s ďáblem 21:K čemu je dobrý grep...
- Zázraky ihned, nemožné na počkání: sed
- Obcování s ďáblem - další finty s příkazem sed
- Rozsáhlejší příklad se sedem
- Obcování s ďáblem: Další kouzla, aneb awk
- Awk a proměnné
- Obcování s ďáblem 27: Awk a výrazy
- Obcování s ďáblem: Awk a funkce
- Awk a příkazy
- Co je to vlastně "uživatel"?
- Vlastnictví objektů
- Přístupová práva
- Vlastník, skupina, ostatní...
- Jak je to se skupinami?
- Skupiny a uživatelé
- Scripty
- Komentáře, a volba shellu
- Pro skript může být shell cokoli!
- Shellové skripty a argumenty
- Skripty a proměnné: aritmetika
- Proměnné shellu, "dědění" hodnot
- Práce s proměnnými
- Práce se jmény souborů
- Pole hodnot
- Další triky kolem polí...
- Standardní proměnné shellu
- Základní příkazy pro skripty
- Příkaz if
- Speciální podmínkové příkazy
- Podmínky pro práci se soubory
- Jednoduchý cyklus
- Příkaz for a pomocné příkazy break a continue
- Příkaz case
- Příkazy exit a select
- Rejstřík a přehled
- Procesy
- Informace o procesech
- Další klíčová slova pro příkaz ps
- Příkaz ps: několik praktických přepínačů
- A k čemu že je "ps" dobré?
- Copak procesor, s pamětí je to horší
- Virtuální paměť
- A ještě jednou virtuální paměť
- Zpět k příkazu ps
- Skutečný žrout paměti
- Ještě jednou top
- Doplněk k topu: vm_stat
- Co to tedy všechno znamená?
- Nevychází nám dal a má dáti?
- Kam se stránky ukládají?
- Změna odkládacího disku
- Změna odkládacího disku / fstab
- Poslední poznámka k fstab
- A jak to je se soubory?
- Co vlastně příkaz lsof vypisuje?
- Příkaz lsof a obsah sloupce NAME
- SIPS - Terminál není jen pro nadšence UNIXu
- Tak nám zabili NetInfo, paní Müllerová