Fórum Root.cz

Hlavní témata => Software => Téma založeno: aigor.net 20. 10. 2021, 09:36:01

Název: bash, jak výstup nebo pouze chyba
Přispěvatel: aigor.net 20. 10. 2021, 09:36:01
Ahoj, řeším takovou hloupost a dost se v tom plácám.
Volám z PHP exec() na Bash příkaz, který má generovat nějaký výstup. Problém je, že při chybě se hláška spojí s výstupem a já potřebuju pouze text samotné chyby.
IMHO nejlíp asi formulovat příkaz tak, aby na výstupu byl pouze výsledek příkazu, NEBO text chyby. Jde to takto zapsat?
Název: Re:bash, jak výstup nebo pouze chyba
Přispěvatel: FKoudelka 20. 10. 2021, 10:15:01
Pokud nastane chyba, zavolat ten samy prikaz znovu a presmerovat stout na /dev/null
…. 1>/dev/null
Název: Re:bash, jak výstup nebo pouze chyba
Přispěvatel: Ondřej Kolín 20. 10. 2021, 10:33:57
Nemuzete pouzit neco chytrejsiho, co umi zpracovat stdout i stderr?

V Bashi je to celkem zbytecny prepisovat imho.

https://stackoverflow.com/questions/2320608/php-stderr-after-exec
Název: Re:bash, jak výstup nebo pouze chyba
Přispěvatel: aigor.net 20. 10. 2021, 10:55:07
Nemuzete pouzit neco chytrejsiho, co umi zpracovat stdout i stderr?

Díky!, přesně tohle jsem potřeboval.

Čumím na to jako puk, jdu se napřed zahrabat do houští a pak se dál učit...  ;)
Název: Re:bash, jak výstup nebo pouze chyba
Přispěvatel: synuhed 21. 10. 2021, 20:52:54
Pres fifo , pro inspiraci:

napriklad:
1a] mkfifo /tmp/stdout
1b] mkfifo /tmp/stderr

V jednom okne (bude cekat na vstup):
2a] tail -f /tmp/stdout
V dalsim okne
2b] tail -f /tmp/stderr

a pak odzkousime:
prikaz bez chyby:
3a] mount >/tmp/stdout 2>/tmp/stderr

s chybou:
3b] mount /d >/tmp/stdout 2>/tmp/stderr

a pak samozrejme nezapomenout uklidit
rm /tmp/std*

J
Název: Re:bash, jak výstup nebo pouze chyba
Přispěvatel: synuhed 21. 10. 2021, 21:07:35
A jeste jednodussi inspirace:

OK prikaz:
 mount |( while read a; do echo OUT:$a; done )
Chyba:
 mount /d |( while read a; do echo OUT:$a; done )

co nema OUT: na zacatku je chyba.. jen bacha na vyhodnoceni error code..
J