Portál AbcLinuxu, 15. května 2025 17:54

Dotaz: Jak vygenerovat pole a naplnit je

21.10.2012 15:55 Dominik
Jak vygenerovat pole a naplnit je
Přečteno: 302×
Odpovědět | Admin
Zdravím, je možné pomocí kódu vytvořit pole s nějakým názvem a naplnit je daty? Výsledek aby byl třeba takto takto.
#!/bin/bash
DOM=("Quam" "Habitasse" "Dolor")
BYT=("Quisque" "Lorem" "Sermentum")
HAT=("parturient" "Vivamus" "Morbi")
Pokud ano poradíte prosím?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.10.2012 16:17 l4m4
Rozbalit Rozbalit vše Re: Jak vygenerovat pole a naplnit je
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud rozumím správně tomu ‚s nějakým názvem‘, tak chceš symbolickou referenci na pole, tj. název pole není literál, ale je v nějaké proměnné. To přímo nejde, lze to obejít pomocí eval nebo vygenerováním kódu, například uvedeného, který pak sourcneš (viz ‚help source‘).
21.10.2012 17:20 Dominik
Rozbalit Rozbalit vše Re: Jak vygenerovat pole a naplnit je
nn, myslel jsem to takto, mam soubor ve kterém bude napsáno
R1 "DOM" //toto je nazev pole do kterého potřebuji načíst následující řádky
R2 "toto je prvni radek pole"
R3 "toto je druhy radek pole"
R4 "toto je treti radek pole"
A vím, že název pole které potřebuji vytvořit se má jmenovat DOM a toto pole chci naplnit řádky z toho souboru. Díky
21.10.2012 18:05 l4m4
Rozbalit Rozbalit vše Re: Jak vygenerovat pole a naplnit je
Ano, tak jsem to myslel, je zapotřebí použít eval nebo (většinou lépe) vstupní soubor přegenerovat na sekvenci příkazů vyrábějící to pole, která se pak sourcne. Takže dodám jedinou věc:

Shell není jazyk pro zpracování komplexních dat.

Existuje ksakru tisíc jazyků, ve kterých se příjemně pracuje s komplexními daty, databázemi, provádějí výpočty, vytvářejí uživatelská rozhraní, etc. Už tady jen čekám na dotaz, jak dá v shellu napsat ovladač grafické karty nebo něco podobného...
21.10.2012 22:51 lofcek
Rozbalit Rozbalit vše Re: Jak vygenerovat pole a naplnit je
No .. v bashi sa to da, aj ked suhlasim, ze bash ani zdaleka nie je komplexny jazyk a jeho kretenizmy ma obcas dost vytacaju.

Obycajne pole sa da vytvorit takto
x=("prvok0" "prvok1" "prvok2");
echo ${x[1]}
a od bash 4.0 existuje dokonca aj asociativne pole:
declare -A dom;
dom=(["r1"]="prvy riadok" ["r2"]="druhy riadok");
echo ${dom[r1]}
21.10.2012 23:09 Kit
Rozbalit Rozbalit vše Re: Jak vygenerovat pole a naplnit je
Bash je komplexní jazyk, ale takové vylomeniny se v něm prostě nedělají, protože na to není určen. Až se dozvíme, k čemu to vlastně tazatel potřebuje, tak mu možná poradíme nějakou trivialitu, která s polem nemá nic společného a přitom jeho problém vyřeší.
martin-ux avatar 22.10.2012 10:07 martin-ux | skóre: 18 | Bratislava
Rozbalit Rozbalit vše Re: Jak vygenerovat pole a naplnit je
Odpovědět | | Sbalit | Link | Blokovat | Admin
caf,

hladas sposob, co zo suboru, ktory si poslal vytvori shellovy script ? Teda preparsuje subor a vytvori to, co si poslal v otazke?

Ak hej, posli cely subor (nech vidno ako je def. DOM/BYT/HAT v tom subore). Zatial vidno len R1 - DOM relaciu. Ako by to vyzeralo pre BYT, etc.?

V jednom scripte IMO sam sebe nedokazes vytvoris premennu s nazvom tak ako chces ty; dokazes vsak k nej pristupovat cez eval pod tym menom (tak ako to spomeunl @l4m4).
..when you do things right, people won't be sure you've done anything at all..

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.