Portál AbcLinuxu, 10. května 2025 19:18

Dotaz: Problém s funkcí declare

24.9.2021 09:45 dnes
Problém s funkcí declare
Přečteno: 329×
Odpovědět | Admin
Dobrý den, mám takovou funkci která mi nefunguje.
#!/bin/bash

function MyReader(){
local i r
declare -i i=0
declare -a POLE=()
while read r; do
	POLE+=("$r")
	let i++
done < /file
unset i r
} 
Pokud nahradím
declare -a POLE=()
pouze za
POLE=()
tak to funguje, nějaká rada prosím? Díky

Ř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

24.9.2021 10:10 X
Rozbalit Rozbalit vše Re: Problém s funkcí declare
Odpovědět | | Sbalit | Link | Blokovat | Admin
Normalne to funguje. GNU bash, verze 4.3.48.
24.9.2021 10:16 dnes
Rozbalit Rozbalit vše Re: Problém s funkcí declare
Já mám GNU bash, version 5.1.4(1)-release a nefunguje to.
Gréta avatar 24.9.2021 11:44 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Problém s funkcí declare

mam taky GNU bash, verze 5.1.4(1)-release (x86_64-pc-linux-gnu) a uplně normálně mi to jede :O :O

asi jakoby víc upřesni co myslíš tim že to nefunguje :O :O

24.9.2021 10:29 dnes
Rozbalit Rozbalit vše Re: Problém s funkcí declare
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak jsem zjistil ještě tohle,
echo ${POLE[@]}
vypíše uvnitř funkce všechny prvky ale v jiné funkci už ne.
Gréta avatar 24.9.2021 11:47 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Problém s funkcí declare

nóóóóó protože to je vtý funkci jako lokální proměná :O ;D jestli jakoby chceš aby k tý proměný mohlo přistupovat víc funkcí tak tu proměnou asi chceš udělat globální ;D

hele příklady nějaký :D ;D

24.9.2021 11:58 dnes
Rozbalit Rozbalit vše Re: Problém s funkcí declare
V Bash-i přece jsou dostupné veškeré proměnné v celé části kódu, pokud tedy nenastavím pro danou proměnnou 'local', nehledě na to, že pokud nepoužiji 'declare' viditelná všude je.
Řešení 1× (Gréta)
24.9.2021 12:10 X
Rozbalit Rozbalit vše Re: Problém s funkcí declare
Viz manual, bash -c 'help declare':
When used in a function, declare makes each name local, as with the local command, unless the -g option is used.
Gréta avatar 24.9.2021 12:13 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Problém s funkcí declare

ajo :D

možná jakoby zkuz to pole deklarovat takle s tim g navíc :O :O

declare -ag POLE=()
24.9.2021 12:22 dnes
Rozbalit Rozbalit vše Re: Problém s funkcí declare
Díky moc. Funguje. Jinak nevíte prosím jak deklarovat proměnnou která má být určena pouze pro string? Nikde jsem to nenašel.
24.9.2021 16:58 X
Rozbalit Rozbalit vše Re: Problém s funkcí declare
Ani nenajdes, protoze bash datove typy v podstate nema.

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.