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