command:
for x in {1..3}; do echo "$x" && sleep 2 ; done | tee output123
writes
1
2
3
correctly to output123, why -a for tee is not necessary here?
And I know, for :
for x in {1..3}; do echo "$x" | tee -a output123 && sleep 2 ; done ,
it needs tee -a.
I guess there's something to do with the bash loop?
CodePudding user response:
In the first one the loop runs and all its output is given to a single tee. In the latter one tee is run for each loop iteration so without -a each execution of it will just overwrite the file.
Note that these aren’t equivalent if the file already exists.
