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
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to