Portál AbcLinuxu, 10. května 2025 22:06
Ř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.