diff --git a/bin/sh/miscbltin.c b/bin/sh/miscbltin.c index 715e324c6832..4575e966295d 100644 --- a/bin/sh/miscbltin.c +++ b/bin/sh/miscbltin.c @@ -191,9 +191,10 @@ readcmd(int argc __unused, char **argv __unused) CHECKSTRSPACE(1, p); if (backslash) { backslash = 0; - startword = 0; - if (c != '\n') + if (c != '\n') { + startword = 0; USTPUTC(c, p); + } continue; } if (!rflag && c == '\\') { diff --git a/bin/sh/tests/builtins/Makefile b/bin/sh/tests/builtins/Makefile index ad39aacf1be5..f3c1dc7f4007 100644 --- a/bin/sh/tests/builtins/Makefile +++ b/bin/sh/tests/builtins/Makefile @@ -121,6 +121,7 @@ FILES+= read4.0 read4.0.stdout FILES+= read5.0 FILES+= read6.0 FILES+= read7.0 +FILES+= read8.0 FILES+= return1.0 FILES+= return2.1 FILES+= return3.1 diff --git a/bin/sh/tests/builtins/read8.0 b/bin/sh/tests/builtins/read8.0 new file mode 100644 index 000000000000..fb786ff008b9 --- /dev/null +++ b/bin/sh/tests/builtins/read8.0 @@ -0,0 +1,17 @@ +# $FreeBSD$ + +read a b c <<\EOF +\ +A\ + \ + \ + \ +B\ + \ + \ +C\ + \ + \ + \ +EOF +[ "$a.$b.$c" = "A.B.C" ]