Portál AbcLinuxu, 6. listopadu 2025 09:30
if(!include_once 'file.php'){
echo("File not loaded...
");
exit("Error!");
}
. file.bash
tak v $? je uložena návratová hodnota posledního příkazu z file.bash, pokud soubor neexistuje tak to zklame (tedy nebude tam 0).
Tedy můžeš testovat $?, ale netestuješ přímo to, na co se ptáš…
Pokud je file.bash tvůj script a nakonci máš exit 0 , tak přes $? otestuješ jestli se korektně provedl nebo ne a to 'ne' zahrnuje i neexistenci.
PS: Ta PHP konstrukce mi nedává moc smysl…
include_once 'file.php';O zbytek se postarají výjimky.
Jestli je include fatální v daný okamžik, tak pak:
require_once 'file.php';a je to. pokud není (použije se include), tak to zklame kde má…
Možná konstrukce:
if(!(@include_once 'file.php'))
throw new myInclException("Bylo tu, není tu");
by možná dávala (mně) smysl.
exitus(){
echo "Soubor se nepodařilo načíst.."
exit 1
}
. file.bash || exitus
nebo jen
. file.bash || exit 1
file.bash (skončil bez chyby) vs. (poslední příkaz skončil s chybou nebo soubor se nepodařilo vložit/provést).
Jak jsem psal výše, testuješ tím, že poslední příkaz obsažený ve file.bash (skončil bez chyby) vs. (poslední příkaz skončil s chybou nebo soubor se nepodařilo vložit/provést).
Ale toho příkazem . /my.sh || exitus docílím i tak, na víc je to jediné co funguje, jelikož když budu chtít testovat $? == 0 tak přece nemůžu dát do sourcovaného scriptu na konec exit 0
jelikož by se hned celý script ukončil.. Dík
Oops, velké sorry za exit 0, mělo být return 0 - nějak mi to ujelo.
. /my.sh || exitusdocílíš úplně to samé co
. /my.sh if [ $? != 0 ]; then exitus; fibo to je to de-facto to samé jen jinak napsané, tedy stále platí, že chyba nastane pokud poslední příkaz vkládaného souboru skončí s chybou nebo soubor neexistuje.
FILE=foo.sh
if test -e $FILE; then
. $FILE
else
echo "File not loaded...
";
exit 1
fi
Podla mojho nazoru rovno otestovat na citanie a to tak v logickej nadvaznosti na spravu v pripade nemoznosti nacitania daneho suboru a najma na fakt, ze overenie existencie suboru este nic nevravi o moznosti ho citat, co je v tomto pripade klucove. Vid:
patrik@domov:~$ stat /etc/shadow File: ‘/etc/shadow’ Size: 1009 Blocks: 8 IO Block: 4096 regular file Device: 12h/18d Inode: 112385 Links: 1 Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: ( 42/ shadow) Access: 2013-09-06 10:12:39.997458015 +0100 Modify: 2013-09-06 10:12:39.997458015 +0100 Change: 2013-09-06 10:12:40.005458028 +0100 Birth: - patrik@domov:~$ groups patrik lp cdrom floppy sudo audio dip video plugdev netdev patrik@domov:~$ echo $UID 1000 patrik@domov:~$ test -e /etc/shadow patrik@domov:~$ echo $? 0 patrik@domov:~$ test -r /etc/shadow patrik@domov:~$ echo $? 1
test -r soubor && . soubor || { echo "Nnenacteno"; exit 1; }
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.