Portál AbcLinuxu, 10. května 2025 22:06

Dotaz: bash source

12.11.2020 22:04 pou | skóre: 18
bash source
Přečteno: 369×
Odpovědět | Admin
Ahoj,

píšu skript ve kterém potřebuji načíst funkce z jiného (mě nepatřícího) skriptu. Problém je, že skript končí příkazem exit.

Takže pokud v mém skriptu zavolam "source funkce.sh" zkončí i můj skript. Pokud ve skriptu "fnkce.sh" smažu řádek "exit" vše funguje.

Nevíte prosím jak potlačit toto chování? Tedy načíst funkce, ale přitom ignorovat exit?

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

Řešení 2× (Bherzet, pou (tazatel))
12.11.2020 22:20 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: bash source
Odpovědět | | Sbalit | Link | Blokovat | Admin
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.

13.11.2020 08:41 pou | skóre: 18
Rozbalit Rozbalit vše Re: bash source
Díky za radu,

to řešení nejde, skript upravit můžu,ale při aktualizaci systému by se mi to zase přepsalo.

Ten reg. funguje.

Díky
Řešení 2× (Bherzet, pou (tazatel))
13.11.2020 03:03 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: bash source
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co předefinovat fci exit?
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 ---
-- OldFrog
13.11.2020 08:42 pou | skóre: 18
Rozbalit Rozbalit vše Re: bash source
Tyjo to mě vůbec nenapadlo :)

Tohle funguje správně, je to jednoduché a funkční, díky!
14.11.2020 00:19 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: bash source
:-)
-- OldFrog

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.