bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Are there any plans for more readable, modern syntaxes for If statem


From: John W
Subject: Re: Are there any plans for more readable, modern syntaxes for If statements?
Date: Sun, 29 Mar 2020 01:55:52 -0700

On 3/26/20, George <tetsujin@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!



reply via email to

[Prev in Thread] Current Thread [Next in Thread]