On 9/22/18 6:49 AM, dirk+b...@testssl.sh wrote: > > > On 9/22/18 12:38 PM, Ilkka Virta wrote: >> On 22.9. 02:34, Chet Ramey wrote: >>> Newline? It's probably that stdout is line-buffered and the newline causes >>> a flush, which results in a write(2). >> >> Mostly out of curiosity, what kind of buffering logic does Bash (or the >> builtin >> printf in particular) use? It doesn't seem to be the usual stdio logic where >> you get >> line-buffering if printing to a terminal and block buffering otherwise. I >> get a >> distinct write per line even if the stdout of Bash itself is redirected to >> say >> /dev/null or a pipe: >> >> $ strace -etrace=write bash -c 'printf "foo\nbar\n"' > /dev/null >> write(1, "foo\n", 4) = 4 >> write(1, "bar\n", 4) = 4 >> +++ exited with 0 +++ > > Oh. But thanks anyway! > > coreutils in fact does it in one shot as you indicated.
Then the change you need suggests itself: env printf ... or (exec printf ...) since the bash exec builtin doesn't execute builtin commands. Chet -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, UTech, CWRU c...@case.edu http://tiswww.cwru.edu/~chet/