Tom Rees
Tom Rees

Reputation: 455

Bash escaping/expanding order

I'm fairly new to Bash and I'm having trouble working out what is happening to my input as it is interpreted. Specifically, when escaping occurs relative to the other expansion steps.

From what I've read, bash does the following (in order):

But this list doesn't include when it converts all escape sequences e.g. '\\' into their meanings e.g. '\'. That is, if I want to print a backslash character. The command to run is

echo \\

not

echo \

So the syntax required for the semantics of a backslash character is two backslashes. This must be converted into a single slash representation internally.

It seems to be sometime before command substitution as I found out with a small test program.

So, my question is: When does this step take place? (or a complete list of the bash interpretation loop would be perfect)

and also, are there any other subtleties in the interpreter that are likely to catch me out? (related to knowing the complete list i guess)

Upvotes: 2

Views: 430

Answers (1)

chepner
chepner

Reputation: 531958

From the man page's Expansion section, just before the Redirection section.

Quote Removal

After the preceding expansions, all unquoted occurrences of the characters \, ', and " that did not result from one of the above expansions are removed.

Quote removal is one final process after the seven expansions you list.

Upvotes: 2

Related Questions