Portál AbcLinuxu, 12. května 2025 12:33
function one () { # tato funkce zpracuje data které zaberou +/- hodně moc paměti } function two () { # normalni funkce která pracuje s daty které vytvořila funkce one }Otázka, jak můžu zcela ukončit první funkci a spustit druhou funkci? Děkuji za pomoc
(b) tak, že one() nebude funkce, ale skript.Velké díky, teď to ukazuje v shelu, místo 8% využité paměti jen 0.1% využité paměti.
pokud mám kód: . .. ... /root/main.sh # Spustím script echo ${#ARRAY[@]} # výsledek je vždy 0 ... .. .v souboru /root/main.sh mám: ARRAY=("ahoj" "nazdar" "bazar") pokud soubor načtu pomocí source, tak vše funguje, co je špatně?
Tazko povedat, co presne robite. Ale velmi pravdepodobne je problem v tom, kde sa dany kod vykona. Ak sa pouzije source, tak sa kod vykona v aktualnom shell-i. Ak sa to spusti ako skript, tak sa automaticky spusta subshell. Dane pole by muselo byt exportnute, aby bolo dostupne aj v shell-i, ktoreho je potomkom.
A bude lepsie, ak sem budete davat kod, nez bodky atd ...
one()
aj two()
súčastne, údaje spracovávať streamovo a výstup funkcie one()
posielať okamžite na vstup two()
napr. cez pipe. To ale bez podrobnejšieho zadanie nevieme povedať.
Otázka, jak můžu zcela ukončit první funkci a spustit druhou funkci?Ako to robíš teraz, že tomu tak nie je? Lebo štandardné správanie sa je presne to, čo požaduješ:
#! /bin/bash function one () { # tato funkce zpracuje data které zaberou +/- hodně moc paměti } function two () { # normalni funkce která pracuje s daty které vytvořila funkce one } one twoPo skončení
one()
sa spustí two()
.
Mimochodom, syntax function name () command
je neprenositeľný bashizmus, POSIX-ovo prenositeľný zápis je name () command
.
#! /bin/bash
, takže nevadí, že to bude fungovať iba v bash. :)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.