Author: Stan Eisenstat
Subject: Re: [Cs323] Escaped =
Date: Sunday, 27 Sep 2020, 08:59:38
> Message Posted By: Unknown
>
> When any other special char is escaped, like \; , they are treated as
> literals. However, equal signs are not. Is this behavior intentional? For
> example:
> (1)$ test\;test
> CMD (Depth = 0): SIMPLE, argv[0] = test;test
>
> However,
> (1)$ test\=test a j
> CMD (Depth = 0): SIMPLE, argv[0] = a, argv[1] = j
> LOCAL: test=test,
>
> Why is = being treated still as a command?
It is not.
As stated in the specification:
Tokenization includes the following bash features:
* [Escape Characters] The escape character \ removes any special meaning that
is associated with the non-null, non-newline character immediately following.
This may be used to include whitespace (but not newlines), metacharacters,
and single/double quotes in a TEXT token. The escape character is removed.
Thus test\;test is tokenized as test;test and test\=test
as test=test, both of which are TEXT tokens. The first
must be an argument; the second must be a [local].
--Stan-
PREV
INDEX
NEXT