[CentOS] C5 BASH IF
Robert Nichols
rnicholsNOSPAM at comcast.net
Sat Feb 14 19:13:32 UTC 2015
On 02/14/2015 12:03 PM, Les Mikesell wrote:
> On Sat, Feb 14, 2015 at 11:36 AM, J Martin Rushton
> <martinrushton56 at btinternet.com> 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.
More information about the CentOS
mailing list