Le 22/01/2021 à 18:55, Greg Wooledge écrivait :
It's not hard at all.  People just have a deep, almost religious, loathing
against creating their own temp files.

And yet, these same people are*perfectly*  happy if some tool creates
a temp file for them -- as long as they don't have to see any of the
details or do any of the work.

Because handling a temp file properly is already a bit of additional implementation that involves using trap for cleanup. Handling multiple tempfiles with proper cleanup becomes a complex unreliable task if implemented with Bash script commands.

So if a syntactic sugar does it all properly, safely and with proper cleanup then it is good.

You could always implement the equivalent of:

read -r variable < <(command)

with creating a temporary fifo:

fifo=$(mktemp --dry-run)
trap 'rm -f "$fifo"' EXIT
mkfifo "$fifo" || exit 1
compgen -u >"$fifo" &
mapfile -t users <"$fifo"

But I really prefer this way because it is safer and much more reliable:
mapfile -t users < <(compgen -u)

Now replace the the () with {}, replace the implicit temporary fifo by and implicit temporary file; then have the same feature but without spawning a sub-shell.

--
Léa Gris


Reply via email to