On 3/26/20, George <tetsu...@scope-eye.net> wrote: > On Thu, 2020-03-26 at 19:05 +0200, Vaidas BoQsc wrote: > I think shells would really benefit from things like > more powerful data structures, better facilities for passing complex data > to, and parsing complex data from different programs, better scoping, > better file handling, and clean-up of various language and implementation > details that currently tend to trip people up.
I can almost hear the same thoughts going through Larry Wall's head 30+ years ago (: > $ some_command -file1 $fd1 -file2 $fd2 {fd1}<./first_file > {fd2}<./second_file > > to work as a substitute for this: > > $ exec {fd1}<./first_file {fd2}<./second_file # open files, store file > descriptor numbers in parameters > $ some_command -file1 $fd1 -file2 $fd2 > $ exec {fd1}<&- {fd2}<&- # close files > > That is, open the files just for the command being run (because that's how > redirections work) and make the parameters storing the file descriptor > numbers available before expanding parameters in the command, so you can > pass them to the command. Are you familiar with Bash's <(...) syntax? Your example could be written (if I understand right): $ some_command -file1 <(cat ./first_file) -file2 <(cat ./second_file) Though that doesn't store the descriptors in variables. Personally, I've found that I've grown into shell syntax over the years. I certainly went through phases where it felt strange and clunky (and some parts genuinely are, to be sure), but I have come to appreciate more of the design choices and less-known features over time. One day I may even read the entire manual page and understand it!