Richard Ulmer writes:
> Hi,
> when there is a single ' in a comment within a subshell, I get this
> error: foo[6]: no closing quote
>
> Here is an example script to reproduce the problem:
>
> foo=$(
>       # It's bar:
>       echo bar
> )
> echo $foo

This is certainly not the best way to do this but it does the job:

~/src/ksh       [OpenBSD 6.6]
[ksh]flask@void$ /bin/ksh
void$ foo=$(
>   # quote: '
>   echo bar
> )
> ^D
/bin/ksh: no closing quote
~/src/ksh       [OpenBSD 6.6]
[ksh]flask@void$ ./ksh
void$ foo=$(
>   # quote: '
>   echo bar
> )
void$ echo $foo
bar
void$

In particular it just reeks of kludge, which I'm not happy with
because according to the comment two-dozen lines up it's already a
kludge. The loop is lifted from the beginning of the same function,
where regular comments are skipped.

Matthew

--- lex.c.~1.78.~       Mon Jan 15 16:58:05 2018
+++ lex.c       Sat Dec 14 10:55:06 2019
@@ -496,6 +496,12 @@
                                        statep->ls_scsparen.csstate = 4;
                                        ignore_backslash_newline++;
                                        break;
+                                case '#':
+                                        ignore_backslash_newline++;
+                                        while ((c = getsc()) != '\0' && c != 
'\n')
+                                                ;
+                                        ignore_backslash_newline--;
+                                        break;
                                }
                                break;
 

Reply via email to