PREV INDEX NEXT

Author: Stan Eisenstat
Subject: Re: [Cs223] How to deal with backslash?
Date: Wednesday, 19 Feb 2020, 20:29:00


    > Message Posted By: Unknown
    >
    > I'm confused about how should we deal with backslash. The output of "echo
    > a | /c/cs223/Hwk3/strwrs -q \a ab" and "echo a | /c/cs223/Hwk3/strwrs -q
    > /a ab" are both ab. So my interpretation is backslash works similarly with
    > forward slash by escaping the following character.

The output from

  % echo A | /c/cs223/Hwk3/strwrs -q /A AB

is AB because STRWRS treats /A as A, which it replaces
by AB.  However, the output from

  % echo A | /c/cs223/Hwk3/strwrs -q \A AB

is AB because the SHELL converts \A to A before running
strwrs (i.e., argv[1] = "A").  Finally, the output from

  % echo A | /c/cs223/Hwk3/strwrs -q '\A' AB

is A because the first argment now begins with a
backslash (argv[1] = "\\A"), which does not match any
character in the input, so no substitution is made.
(You can see this more clearly using the -v flag.)
=====
    
    > However, the output of "echo + | /c/cs223/Hwk3/strwrs -q /+ ab" is ab but
    > the output of "echo + | /c/cs223/Hwk3/strwrs -q \+ ab" is ab+. I
    > understand the "/+" case but I don't know how to interpret the output from
    > "\+" case. Thank you.

The output from

  % echo + | /c/cs223/Hwk3/strwrs -q /+ AB

is AB because STRWRS treats /+ as a + character, not
something that matches the start of the input line, and
replaces the + in the input with AB.  The output from

  % echo + | /c/cs223/Hwk3/strwrs -q \+ AB

is AB+ because the SHELL converts \+ to + before running
strwrs (i.e., argv[1] = "+"), and strwrs treats the + as
matching the start of the string.  (Again, using the -v
flag makes this clearer.)

--Stan-
PREV INDEX NEXT