hush: fix "hush -c 'echo $#'" showing -1

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2010-05-22 06:05:02 +02:00
parent 1e811b1231
commit 8a33679694
3 changed files with 11 additions and 2 deletions

View File

@ -7080,7 +7080,6 @@ int hush_main(int argc, char **argv)
/* -c 'script' (no params): prevent empty $0 */ /* -c 'script' (no params): prevent empty $0 */
G.global_argv--; /* points to argv[i] of 'script' */ G.global_argv--; /* points to argv[i] of 'script' */
G.global_argv[0] = argv[0]; G.global_argv[0] = argv[0];
G.global_argc--;
} /* else -c 'script' ARG0 [ARG1...]: $0 is ARG0 */ } /* else -c 'script' ARG0 [ARG1...]: $0 is ARG0 */
init_sigmasks(); init_sigmasks();
parse_and_run_string(optarg); parse_and_run_string(optarg);

View File

@ -1,4 +1,9 @@
0
0
1
Make sure len parsing doesnt break arg count
0 0 0 0
4 4 4 4
Testing len op
4 3 2 1 0 0 4 3 2 1 0 0
0 3 0 0 3 0

View File

@ -1,9 +1,14 @@
# make sure len parsing doesnt break arg count "$THIS_SH" -c 'echo $#'
"$THIS_SH" -c 'echo $#' arg0
"$THIS_SH" -c 'echo $#' arg0 arg1
echo Make sure len parsing doesnt break arg count
set -- set --
echo $# ${#} echo $# ${#}
set -- aaaa bbb cc d set -- aaaa bbb cc d
echo $# ${#} echo $# ${#}
echo Testing len op
echo ${#1} ${#2} ${#3} ${#4} ${#5} ${#6} echo ${#1} ${#2} ${#3} ${#4} ${#5} ${#6}
unset e unset e