Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Printf, Increment en Tee werken niet lekker samen  (gelezen 2046 keer)

Offline R24D24

  • Lid
Printf, Increment en Tee werken niet lekker samen
« Gepost op: 2021/03/08, 20:06:45 »
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.
« Laatst bewerkt op: 2021/03/08, 20:22:41 door R24D24 »

Offline vanadium

  • Lid
Re: Printf, Increment en Tee werken niet lekker samen
« Reactie #1 Gepost op: 2021/03/08, 21:03:21 »
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:

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