Portál AbcLinuxu, 7. listopadu 2025 09:10
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
two
Po 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.