echo isn't a great example at all.  echo is both OS and SHELL specific.
Not only that, echo has argv to work with; each with it's own terminating
'\0'.
It absolutely can be quite literal, though that doesn't stop the
implementors from doing whatever they want.

Here's a snippet from my own OS's `man echo`:

     "Most shells provide a builtin echo command which tends to differ from
     this utility in the treatment of options and backslashes.  Consult the
     builtin(1) manual page."


Here's the cruft of it ......

With a single quoted string ..... containing a single quote itself  .......
in any given interpreted language ..... with no EOL or EOF in sight ....
How would you let the interpreter know your done?
The answer:  You can't without escaping the single quote.

Some more examples I wrote up.
You'll note, they all use single quotes, yet they all interpret as they
absolutely should.

Example Perl 5:
---------------------------------
# perl -e "print '\''" ;
'
# perl -e "print '\\'" ;
\
# perl -e "print '\a'" ;
\a


Example PHP 7.3:
---------------------------------
# php -r "print '\'';"
'
# php -r "print '\\';"
\
# php -r "print '\a';"
\a

Example python3.6  **unique**:
---------------------------------------
# python3.6 -c "print('\'')"
'
# python3.6 -c "print('\\')"
\
# python3.6 -c "print('\a')" | hexdump -oc | head -1
0000000  005007


On Tue, Dec 3, 2019 at 9:04 PM ToddAndMargo via perl6-users <
perl6-users@perl.org> wrote:

> On 2019-12-03 17:31, Paul Procacci wrote:
> > When a string is specified in single quotes, perl6 (or any other
> > language that I'm aware of) will not evaluate or interpret an escape
> > character EXCEPT when the escape is follow'd by a single quote (') or
> > backslash(\).
> > These HAVE to be escaped and the interpreter HAS to account for it.
>
> Hi Paul,
>
> I am not finding that to be the case.  Well maybe not Perl 5.
>
> $ bash -c "echo '\'"
> \
>
> $ echo '\\\'
> \\\
>
> $ echo '\\'
> \\
>
> $ echo '\'
> \
>
>
>    If it is on purpose and not a "feature" in Perl 6, then
> the documentation should state that single quotes will
> have interpretations inside of them in certain cases.
>
>
> Ahh Perl 5 is a pain in the butt backslash wise!
>
> $ perl -e "CORE::say '\\\\';"
> \
>
> And I am seeing in
> https://docs.perl6.org/language/quoting
>       Literal strings: Q
>       Q[A literal string]
>
> Is the way I have been using single quotes.
>
> So the rule is single quotes are literal, unless a backslash
> in included, then use Q
>
> Thank you for the help!
>
> -T
>


-- 
__________________

:(){ :|:& };:

Reply via email to