[CentOS] C5 BASH IF

Sat Feb 14 19:28:47 UTC 2015
Les Mikesell <lesmikesell at gmail.com>

On Sat, Feb 14, 2015 at 1:13 PM, Robert Nichols
<rnicholsNOSPAM at comcast.net> wrote:
>
>> 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).

I think that is still an oversimplification because more than
expansion is involved and the order related to other steps.  When does
it do i/o redirection; which things happen before/during starting
subshells/pipes; what if you use 'eval', etc.?

-- 
   Les Mikesell
     lesmikesell at gmail.com