diff options
-rw-r--r-- | shell/hush.c | 15 | ||||
-rw-r--r-- | shell/hush_test/hush-misc/nommu2.right | 5 | ||||
-rwxr-xr-x | shell/hush_test/hush-misc/nommu2.tests | 5 |
3 files changed, 22 insertions, 3 deletions
diff --git a/shell/hush.c b/shell/hush.c index d02e68d..7d851ed 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -4406,9 +4406,15 @@ static void debug_print_tree(struct pipe *pi, int lvl) lvl*2, "", prn, command->assignment_cnt); if (command->group) { - fprintf(stderr, " group %s: (argv=%p)\n", + fprintf(stderr, " group %s: (argv=%p)%s%s\n", CMDTYPE[command->cmd_type], - argv); + argv +#if !BB_MMU + , " group_as_string:", command->group_as_string +#else + , "", "" +#endif + ); debug_print_tree(command->group, lvl+1); prn++; continue; @@ -5986,7 +5992,7 @@ static int handle_dollar(o_string *as_string, # if !BB_MMU if (as_string) { o_addstr(as_string, dest->data + pos); - o_addchr(as_string, '`'); + o_addchr(as_string, ')'); } # endif o_addchr(dest, SPECIAL_VAR_SYMBOL); @@ -6535,6 +6541,9 @@ static struct pipe *parse_stream(char **pstring, * with redirect_opt_num(), but bash doesn't do it. * "echo foo 2| cat" yields "foo 2". */ done_command(&ctx); +#if !BB_MMU + o_reset_to_empty_unquoted(&ctx.as_string); +#endif } goto new_cmd; case '(': diff --git a/shell/hush_test/hush-misc/nommu2.right b/shell/hush_test/hush-misc/nommu2.right new file mode 100644 index 0000000..fb8ba8b --- /dev/null +++ b/shell/hush_test/hush-misc/nommu2.right @@ -0,0 +1,5 @@ +Ok +Ok +Ok +Ok +Done diff --git a/shell/hush_test/hush-misc/nommu2.tests b/shell/hush_test/hush-misc/nommu2.tests new file mode 100755 index 0000000..61ed5ce --- /dev/null +++ b/shell/hush_test/hush-misc/nommu2.tests @@ -0,0 +1,5 @@ +echo Not shown | if true; then echo $(echo Ok); fi +echo Not shown | if true; then echo `echo Ok`; fi +echo Not shown | ( if true; then echo $(echo Ok); fi ) +echo Not shown | ( if true; then echo `echo Ok`; fi ) +echo Done |