shell/ash.c+5 -0
| @@ -7073,6 +7073,11 @@ subevalvar(char *start, char *str, int strloc, |
| repl = NULL; |
| break; |
| } |
| + | /* Skip over quoted 'str'. Example: ${var/'/'} - second / is not a separator */ |
| + | if ((unsigned char)*repl == CTLQUOTEMARK) { |
| + | while ((unsigned char)*++repl != CTLQUOTEMARK) |
| + | continue; |
| + | } |
| if (*repl == '/') { |
| *repl = '\0'; |
| break; |
shell/ash_test/ash-quoting/dollar_repl_bash2.right+4 -0
| @@ -0,0 +1,4 @@ |
| + | axxb |
| + | axxb |
| + | axxb |
| + | axxb |
shell/ash_test/ash-quoting/dollar_repl_bash2.tests+8 -0
| @@ -0,0 +1,8 @@ |
| + | v="x/x" |
| + | # The second / is quoted, should not be treated as separator |
| + | echo a${v/'/'}b |
| + | # The second / is escaped, should not be treated as separator |
| + | echo a${v/\/}b |
| + | |
| + | echo "a${v/'/'}b" |
| + | echo "a${v/\/}b" |
shell/hush_test/hush-quoting/dollar_repl_bash2.right+4 -0
| @@ -0,0 +1,4 @@ |
| + | axxb |
| + | axxb |
| + | axxb |
| + | axxb |
shell/hush_test/hush-quoting/dollar_repl_bash2.tests+8 -0
| @@ -0,0 +1,8 @@ |
| + | v="x/x" |
| + | # The second / is quoted, should not be treated as separator |
| + | echo a${v/'/'}b |
| + | # The second / is escaped, should not be treated as separator |
| + | echo a${v/\/}b |
| + | |
| + | echo "a${v/'/'}b" |
| + | echo "a${v/\/}b" |