Portál AbcLinuxu, 6. listopadu 2025 21:13
Řešení dotazu:
source <(grep -v '^exit$' funkce.sh)
Regulární výraz si samozřejmě uprav, pokud je ten exit nějak odsazený a/nebo má parametr.
Rozumnější řešení by bylo napsat si (podobným způsobem jako výše) rádoby-parser, který by dokázal detekovat začátky a konce funkcí (což je v Bashi malinko oříšek, když tělo funkce může být seznam příkazů nebo subshell, může to být one-liner atd., no nicméně dá se to), aby se načítaly opravdu jen funkce a žádný další kód.
Tohle řešení je nakonec nejlepší, ale pokud skript nevlastníš / nemůžeš změnit, tak nic.
ondrej:ondrej # cat ./e.sh
#!/bin/bash
echo A;
exit;
#eof
ondrej:ondrej # ./e.sh
A
ondrej:ondrej # function exit(){ return; }
ondrej:ondrej # . e.sh
A
ondrej:ondrej # source e.sh
A
ondrej:ondrej # unset exit
ondrej:ondrej # . e.sh
-- real exit is here ---
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.