Portál AbcLinuxu, 13. května 2025 21:48
#!/bin/bash function foo_a () { ... kod ... } foo_asoubor foo_b.sh
#!/bin/bash function foo_b () { ... kod ... }spustím v souboru foo_a.sh funkci foo_a, a jak můžu po dokončení spustit v souboru foo_b.sh funkci foo_b? Normálně bych to udělal takto
#!/bin/bash function foo_a () { ... kod ... } fce_a source /cesta/k/souboru/fce_b.sh fce_bJenže to zustane otevřený stále ten soubor foo_a.sh a pokud ho jiný funkce zase zavolá bude se zbytečně plnit paměť. Poradí někdo? děkuji
source /cesta/k/souboru/fce_b.sh fce_a source /cesta/k/souboru/fce_b.sh fce_bOvšem nechápu obavy o zaplnění paměti. Samotný shell zabere v paměti daleko víc místa, než jakýkoli skript, který jsem kdy viděl.
#!/bin/bash . /nekde/kde/jsou/ty/funkce # funkce_a je v tom souboru funkce funkce_asoubor2.sh třeba takto:
#!/bin/bash . /nekde/kde/jsou/ty/funkce # funkce_b je taky v tom souboru funkce funkce_bProstě jde o to, oddělit ty funkce od těch skriptů. A nebo jak bylo popsáno výše tím příkazem source.
..kod die ('error 59') echo "foo"; #tohle už se nikdy nvypíše
echo "error 59" exitprípadne je možné vytvoriť fuknciu die, v ktorej budú tie príkazy echo a exit
#1st message or "Fatal error" #2nd return code or 3 function die { if [ -z "$1" ]; then echo "Fatal error" else echo "$1" fi if [ -z "$2" ]; then exit 3 fi exit $2 }
... .... všechno ukončit ! a spustit error "59"když dám
exit a error "59"tak se error nikdy nespustí, php to ale umožňuje proto se ptám jestli je něco i v bash
exit(); echo 'This will not be output.';A ano, je tam taky funkce register_shutdown_function která registruje funkci, která se zavolá asi ještě před tím die. Na což má BASH podobnou funkci trap. Takže předpokládám, že bys chtěl dělat něco takového?
exit
, return
nebo die
provede ještě další kód daného bloku.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.