On Sun, Jun 28, 2020 at 03:49:45PM +0200, felix wrote: > Bash Versions: 3.2.57(1)-release, 5.0.3(1)-release, 5.1.0(1)-alpha > > In order to reduce forks and make some tasks a lot quicker, I run > forked filters as background tasks, with dedicated I/O fd.
As Pierre already suggested, you appear to be reinventing the coproc. If you really are targeting bash 3.2, which doesn't have the coproc feature, then OK, go you. If you aren't targeting bash 3.2, but simply noted that your code happened to "work" in even that ancient version, then you should just use the coproc feature instead. Your problem description is also covered by <https://mywiki.wooledge.org/BashFAQ/107>. You should at least look over that page and see if it helps you. If you don't want to timestamp a stream, but instead, actually want to fetch the wall-clock time repeatedly in a bash script for some reason, and if you are targeting bash 4.2 or newer, you can use printf -v var '%(...)T' -1 which will not fork. But this seems like an unusual goal. If the *actual* goal is something like "measure the time taken by a specific set of commands", and you thought that fetching the wall-clock time twice and subtracting them was the way to go, I strongly suggest that you use bash's "time" command instead. Use the TIMEFORMAT variable to get the specific output format that you want.