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