There is a much simpler test: does
echo '\\'
print one backslash or 2?
The man page says:
Single Quotes
Enclosing characters in single quotes preserves the literal meaning of all
the characters (except sin‐
gle quotes, making it impossible to put single-quotes in a single-quoted
string).
This bug should be SEVERE because it makes it practically impossible to
write portable shell scripts.
** Description changed:
- Backslashes are cobbled up if a string contains an open square bracket.
-
- If you run the shell script:
-
- #!/bin/sh
-
- BACKSLASH='\u'
- SQUARE='\u[]'
- echo $BACKSLASH
- echo $SQUARE
-
- on ubuntu feisty 2.6.20-16, mac os x and solaris 10 the output is:
-
- \u
- \u[]
-
- but after upgrading to hardy 2.6.24-19 the output is:
-
- \u
- u[]
-
- It seems to be the parsing of the string. This also happens parsing
- string parameters on the command line.
-
-
- /bin/sh is part of the bash package:
-
- dpkg -L bash
- ...
- /bin/sh
- ...
+ In dash, backslashes are parsed within single quotes, contradicting the man
page, as well as the behavior of other common /bin/sh implementations.
+ (Does POSIX mention anything?)
+ The following should print 2 backslashes:
+ echo '\\'
** Summary changed:
- shell script parsing of strings when there is a square bracket. Missing
backslashes
+ dash parses backslashes in single quotes
** Also affects: dash (Debian)
Importance: Undecided
Status: New
--
dash parses backslashes in single quotes
https://bugs.launchpad.net/bugs/259671
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs