Ondersteuning > Programmeren

Printf, Increment en Tee werken niet lekker samen

(1/1)

R24D24:
Ik heb een shellscript waarin ik naar twee verschillende files logregels stuur.
De volgende regels
MCOUNT=0
printf $MCOUNT" " >> $LOGFILE
printf $((++MCOUNT))" " >> $LOGFILE
printf $((++MCOUNT))" " | tee -a $LOGSHORT >> $LOGFILE
printf $((++MCOUNT))" " | tee -a $LOGSHORT >> $LOGFILE
printf $((++MCOUNT))" " >> $LOGFILE
printf $MCOUNT"\n" >> $LOGFILE

Leveren als output in de LOGFILE op:
0 1 2 2 2 2

Mijn beeld is dat de opgehoogde waarde van MCOUNT door de | tee ongedaan wordt gemaakt maar bij een gewone redirect niet. Ik snap alleen niet hoe dat kan.
Iemand enig idee hoe ik toch een teller kan verhogen en zonder dat ik dit in een los statement op een losse regel moet doen.

Nog wat experimenteren leert me dat het in de | zit. De 'tee' is onschuldig.

vanadium:
Bash is soms ondoorgrondelijk. Het lijkt er inderdaad op dat die variabele MCOUNT niet bijgewerkt wordt als je de uitvoer van het commando in een pipe stuurt. Je zal dan toch de teller in een los statement moeten ophogen, maar het kan allemaal wel compact en op één lijn, als:


--- Code: ---((++MCOUNT)) && printf $MCOUNT" " | tee -a $LOGSHORT >> $LOGFILE

--- Einde van code ---

Navigatie

[0] Berichtenindex

Naar de volledige versie