Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: [goswin.brederlow@xxxxxxxxxxxxxxxxxxxxxxxx: Bug#131063: zsh: read -r removes \ in \\]
- X-seq: zsh-workers 16501
- From: "Bart Schaefer" <schaefer@xxxxxxxxxxxxxxxx>
- To: Clint Adams <clint@xxxxxxx>, zsh-workers@xxxxxxxxxx
- Subject: Re: [goswin.brederlow@xxxxxxxxxxxxxxxxxxxxxxxx: Bug#131063: zsh: read -r removes \ in \\]
- Date: Sun, 27 Jan 2002 21:32:09 +0000
- In-reply-to: <20020127202405.GB32151@xxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <20020127202405.GB32151@xxxxxxxx>
On Jan 27, 3:24pm, Clint Adams wrote:
} Subject: [goswin.brederlow@xxxxxxxxxxxxxxxxxxxxxxxx: Bug#131063: zsh: read
}
} ----- Forwarded message from Goswin Brederlow <goswin.brederlow@xxxxxxxxxxxxxxxxxxxxxxxx> -----
}
} ~% echo "\\"
} \
} ~% echo "\\" | read -r i; echo "$i"
} \
} ~% echo "\\\\\\\\"
} \\
} ~% echo "\\\\\\\\" | read -r i; echo "$i"
} \
}
} The manpage says read -r does not remove \.
`read -r' didn't remove the backslash. `echo "$i"' removed it, as was
pointed out a moment later:
} Also echo removes \:
}
} ~% echo "\\\\"
} \
}
} bash will print \\ as intendet. Any reason? (ksh/pdksh print \ I was
} told).
zsh/ksh use the SysV definition of `echo' by default; bash uses the BSD
definition, it would appear. If one had RTM, one would have found that
`echo -E' does what you meant -- or else you can set the BSD_ECHO option
to get that behavior all the time.
So let's try the first example again with BSD_ECHO set:
schaefer[508] setopt BSD_ECHO
schaefer[509] echo "\\"
\
In this case it was double-quoted expansion that removed the backslash.
Using single quotes shows that it was not echo that removed it:
schaefer[513] echo '\\'
\\
Now back to the example:
schaefer[510] echo "\\" | read -r i; echo "$i"
\
schaefer[511] echo "\\\\\\\\"
\\\\
schaefer[512] echo "\\\\\\\\" | read -r i; echo "$i"
\\\\
Neither read nor echo has removed any backslashes. Only double-quoting
did so. Again trying the same thing with single quotes:
schaefer[514] echo '\\\\\\\\' | read -r i; echo "$i"
\\\\\\\\
This is all working exactly as documented.
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.brasslantern.com
Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net
Messages sorted by:
Reverse Date,
Date,
Thread,
Author