Bir süre önce bir senaryo hazırladım ve etrafına günlük kaydı ekledim, ancak günlük kaydı yönlendirmesinin nasıl çalıştığını unuttum :-(
Bunun özü:
#!/bin/bash
LOGFILE=/some/path/mylogfile
(
# here go my commands which produce some stdout
# and, if something goes wrong, also some stderr
) 1>>${LOGFILE} 2> >( tee -a ${LOGFILE} >&2 )
Komut dosyasını çalıştırdığımda, hiçbir şey yazdırmıyor stdout, sadece gidenleri yazdırıyor stderr. Logfile ${LOGFILE}hem stdout hem de stderr'i yakalar.
Senaryoyu çalıştırdığımda ve terminalimde çıktı olmadığında, her şeyin yolunda olduğunu biliyorum. Herhangi bir çıktı varsa, bir şeylerin yanlış gittiğini biliyorum ve sorunun ne olduğunu bulmak için günlük dosyasını kontrol edebilirim.
Yeniden yönlendirmenin beni şaşırtan kısmı şu sözdizimidir: 2> >( some command )
Orada neler olduğunu açıklayan var mı?
echo <(date), bana ikame dosyanın adını verir:/dev/fd/63. Ben yürütmek durumundacat <(date), bu yani ikame dosyanın içeriği, bana tarihini veriyor:Fri Nov 18 14:11:09 NZDT 2016.