Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: [goswin.brederlow@xxxxxxxxxxxxxxxxxxxxxxxx: Bug#131063: zsh: read -r removes \ in \\]



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