Re: C5 BASH IF

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



On 02/14/2015 12:03 PM, Les Mikesell wrote:
On Sat, Feb 14, 2015 at 11:36 AM, J Martin Rushton
<martinrushton56@xxxxxxxxxxxxxx> wrote:
<snip>
To understand it completely you need to know the order of
operations as the shell makes multiple passes over the line,
parsing, processing metacharacters, and expanding variables.   And
I don't know where to find a concise description of that any more.

man bash, about 900 lines down under "EXPANSION".

But it is not 'just' expansions.  You need to know the full order of
operations with all the steps - word splitting, quote removal,  i/o
redirection, groupings, etc., some of which is repeated over the line
after some of the other steps happen.   I think I saw this in an
understandable form for the bourne shell back in the 1980's but can't
remember it well enough to describe and all the bash docs I've seen
are way too convoluted to just see the order of operations as a simple
set of steps - that you need to know before any of the rest will make
sense.

It's the 4 paragraphs at the start of the "EXPANSION" section:

   Expansion is performed on the command line after it has been split into
   words. There are seven kinds of expansion performed: brace expansion,
   tilde expansion, parameter and variable expansion, command substitution,
   arithmetic expansion, word splitting, and pathname expansion.

   The order of expansions is: brace expansion, tilde expansion, parameter,
   variable and arithmetic expansion and command substitution (done in a
   left-to-right fashion), word splitting, and pathname expansion.

   On systems that can support it, there is an additional expansion avail-
   able: process substitution.

   Only brace expansion, word splitting, and pathname expansion can change
   the number of words of the expansion; other expansions expand a single
   word to a single word. The only exceptions to this are the expansions of
   "$@" and "${name[@]}" as explained above (see PARAMETERS).

--
Bob Nichols     "NOSPAM" is really part of my email address.
                Do NOT delete it.

_______________________________________________
CentOS mailing list
CentOS@xxxxxxxxxx
http://lists.centos.org/mailman/listinfo/centos




[Index of Archives]     [CentOS]     [CentOS Announce]     [CentOS Development]     [CentOS ARM Devel]     [CentOS Docs]     [CentOS Virtualization]     [Carrier Grade Linux]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Linux USB]
  Powered by Linux