shell/hush.c+3 -0
| @@ -5303,6 +5303,9 @@ static int handle_dollar(o_string *as_string, |
| all_digits = true; |
| goto char_ok; |
| } |
| + | /* They're being verbose and doing ${?} */ |
| + | if (i_peek(input) == '}' && strchr("$!?#*@_", ch)) |
| + | goto char_ok; |
| } |
| |
| if (expansion < 2 |
shell/hush_test/hush-vars/param_expand_indicate_error.right+0 -1
| @@ -1,5 +1,4 @@ |
| hush: syntax error: unterminated ${name} |
| - | hush: syntax error: unterminated ${name} |
| 0 |
| 0 |
| _ |
shell/hush_test/hush-vars/param_expand_indicate_error.tests+1 -1
| @@ -1,7 +1,7 @@ |
| # do all of these in subshells since it's supposed to error out |
| |
| # first try some invalid patterns |
| - | "$THIS_SH" -c 'echo ${?}' |
| + | #"$THIS_SH" -c 'echo ${?}' -- this is valid as it's the same as $? |
| "$THIS_SH" -c 'echo ${:?}' |
| |
| # then some funky ones |
shell/hush_test/hush-vars/var1.right+2 -2
| @@ -1,4 +1,4 @@ |
| http://busybox.net |
| http://busybox.net_abc |
| - | 1 |
| - | 1 |
| + | 1 1 |
| + | 1 1 |
shell/hush_test/hush-vars/var1.tests+2 -2
| @@ -4,6 +4,6 @@ echo $URL |
| echo ${URL}_abc |
| |
| true |
| - | false; echo $? |
| + | false; echo $? ${?} |
| true |
| - | { false; echo $?; } |
| + | { false; echo $? ${?}; } |
shell/hush_test/hush-vars/var3.right+0 -1
| @@ -1,3 +1,2 @@ |
| hush: syntax error: unterminated ${name} |
| hush: syntax error: unterminated ${name} |
| - | hush: syntax error: unterminated ${name} |
shell/hush_test/hush-vars/var3.tests+1 -1
| @@ -1,4 +1,4 @@ |
| # reject invalid vars |
| "$THIS_SH" -c 'echo ${1q}' |
| "$THIS_SH" -c 'echo ${&}' |
| - | "$THIS_SH" -c 'echo ${$}' |
| + | #"$THIS_SH" -c 'echo ${$}' -- this is valid as it's the same as $$ |