Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Jan Vodolan 28. 07. 2010, 15:09:17
-
Dobrý den, ahoj,
Netušítě někdo jak v shellu spustit program tak aby:
- jeho výstup šel na obrazovku
- zároveň jeho výstup přesměrovat do log souboru
- a ještě zachytit jeho návratovou hodnotu?
něco jako
#!/bin/sh
date | tee soubor.log
if [ $? -ne 0 ]; then
echo "ERROR: Příkaz date neexistuje."
else
echo "OK: Předcházející řádek obsahuje aktuální datum."
fi
Problém je že příkaz za rourou (tee) přepíše návratovou hodnotu příkazu před rourou (date).
Děkuji za jakékoli nasměrování (ale suché fungující řešení uvítám víc).
W
PS: Myslím, že je to docela pěkný programátorský oříšek a klidně by se mohl hodit jako "hádanka dne" ((-:
-
V bashi mas premenu PIPESTATUS kde sa zaznamenavaju jednotlive
navratove kody vsetkych spustenych prikazov v rure.
date | tee log
echo ${PIPESTATUS[*]}
-
Built-in příkaz bashe wait PID vrátí výsledek procesu PID. S tím bys to měl dát dohromady. Jenom vždycky bojuji s nastavováním globálních proměnných v podprocesech (třeba právě v pipových řetězcích), aby ses k tomu PIDu vůbec dostal.
-
V bashi mas premenu PIPESTATUS kde sa zaznamenavaju jednotlive
navratove kody vsetkych spustenych prikazov v rure.
date | tee log
echo ${PIPESTATUS[*]}
Jo tak to je pěkný, díky moc.
-
Super, děkuji moc.
PIPESTATUS je přesně to co jsem potřeboval ((-:
W