On 3/27/18 11:32 PM, Jilles Tjoelker wrote:
I don't think it is clear at all. Note the final paragraph of 2.13.1:
] When pattern matching is used where shell quote removal is not
] performed [...]
This implies that special characters cannot be escaped using a backslash
in a context where shell quote removal is performed.
Taken literally, it just says something about what happens when shell
quote removal is not performed. In the cases we're talking about, shell
quote removal is performed, so this simply wouldn't apply. Perhaps
that's taking it more literally than intended, I don't know.
characters can be escaped using shell quoting. As a result, the simplest
form of parameter expansion has either all or none of the generated
characters quoted (depending on whether the expansion is in
double-quotes or not).
There is also a sentence "The shell special characters always require
quoting." which seems untrue in practice if the characters come from an
expansion. Something like
sh -c 'w=*\&*; printf "%s\n" $w'
works for many shells as sh. However, this could be explained away as
This is what allows extensions to glob syntax, if those extensions use
shell special characters.
p="*(ab)"; case abab in $p) echo match ;; esac
This prints "match" in ksh93.
Harald van Dijk
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html