Portál AbcLinuxu, 9. května 2025 18:41

Dotaz: Jak předat pole funkci?

30.7.2012 23:23 MM
Jak předat pole funkci?
Přečteno: 328×
Odpovědět | Admin
Ahoj, mám takovej kód a potřebuji přenést celé pole do funkce foo aby i v té funkci foo to bylo pořád pole, ale prostě se nedaří.. Neporadí někdo? Díky
function foo {
printf "$1"
}

POLE=()
POLE+=("/home/foo")
POLE+=("/home/foo/add")
POLE+=("/home/foo/cd")
POLE+=("/home/bar")

foo "$POLE"

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

31.7.2012 06:42 Mr.S1lent.cz
Rozbalit Rozbalit vše Re: Jak předat pole funkci?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mohu se zeptat, jaky to ma vyznam? :-) Jinak by taky nebylo spatne napsat, o jaky jazyk se jedna - treba v takovem c/c++ muzes vytvorit double pointer a do nej soupnout pointery na funkce, avsak se shodnym vstupem a vystupem :-)
31.7.2012 09:02 l4m4
Rozbalit Rozbalit vše Re: Jak předat pole funkci?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Předpokládám, že je to bash.

foo "${POLE[@]}"

a ve funkci

a=("$@")
31.7.2012 10:40 MM
Rozbalit Rozbalit vše Re: Jak předat pole funkci?
Předpokládám, že je to bash.
Ano je to BASH

a co když ale potřebuji předat ještě další parametry?
foo "${POLE[@]}" "cislo" "string"
pokud ve funkci použiji
a=("$@")
tak ve funkci neobsahuje $2 předané číslo ale data z pole, to platí i pro $3. Nějaké jiné řešení? Díky
31.7.2012 10:48 l4m4
Rozbalit Rozbalit vše Re: Jak předat pole funkci?
Předej ty ostatní parametry jako první. Použij shift.

V principu lze taky předat to pole referencí, tj. jen jméno proměnné, akorát symbolické dereference polí jsou trochu svérázné, viz 26-12 v http://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/arrays.html
31.7.2012 11:36 MM
Rozbalit Rozbalit vše Re: Jak předat pole funkci?
Tak jsem zkusil první předat string cislo a nakonec pole, ale vysledek je uplne stejny :( Nějaké jine (jednodussi pro mne) použití by nebylo? Díky
31.7.2012 12:01 Kit
Rozbalit Rozbalit vše Re: Jak předat pole funkci?
Pokud nám prozradíš, k čemu to vlastně potřebuješ, možná přijdeme na mnohem jednodušší řešení.

Zákazník, který kupuje vrták, vlastně nechce vrták, ale díru.
31.7.2012 12:43 MM
Rozbalit Rozbalit vše Re: Jak předat pole funkci?
Tak problém bude patrně v objemu dat :( jelikož pole obsahuje více jak 800 000 položek, proto to udělám raději přes soubor. Ale děkuji za pomoc ;)
31.7.2012 16:42 l4m4
Rozbalit Rozbalit vše Re: Jak předat pole funkci?
Pokud zpracováváš pole o 800000 položkách v shellu, troufám si tvrdit, že děláš něco špatně.
31.7.2012 19:57 Kit
Rozbalit Rozbalit vše Re: Jak předat pole funkci?
Hmm, to je vážné. Takové úlohy se řeší úplně jinak. AWK jsi zkusil?

Ovšem o řešené úloze mám stále jen mlhavou představu, jejíž řešení je velmi jednoduché a rychlé. 800 kpoložek není moc.

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.