diff options
author | Mu Qiao <qiaomuf@gentoo.org> | 2011-06-09 23:21:30 +0800 |
---|---|---|
committer | Mu Qiao <qiaomuf@gentoo.org> | 2011-06-11 16:51:16 +0800 |
commit | 9f31ac2104a97e7f12cdc10f27037996041f20c6 (patch) | |
tree | a6052636942c569da91fd308c6d912b6267763de | |
parent | Walker: reimplement positional parameter (diff) | |
download | libbash-9f31ac2104a97e7f12cdc10f27037996041f20c6.tar.gz libbash-9f31ac2104a97e7f12cdc10f27037996041f20c6.tar.bz2 libbash-9f31ac2104a97e7f12cdc10f27037996041f20c6.zip |
Walker: support $#
-rw-r--r-- | bashast/libbashWalker.g | 2 | ||||
-rw-r--r-- | scripts/var_def.bash | 1 | ||||
-rw-r--r-- | scripts/var_def.bash.result | 1 | ||||
-rw-r--r-- | scripts/var_expansion.bash | 2 | ||||
-rw-r--r-- | scripts/var_expansion.bash.result | 2 |
5 files changed, 5 insertions, 3 deletions
diff --git a/bashast/libbashWalker.g b/bashast/libbashWalker.g index 2648ecb..6cd1ef2 100644 --- a/bashast/libbashWalker.g +++ b/bashast/libbashWalker.g @@ -444,7 +444,7 @@ var_ref [bool double_quoted] returns[std::string libbash_value] $libbash_value = walker->resolve<std::string>($var_name.libbash_value, $var_name.index); } |^(VAR_REF libbash_string=array_name) { walker->get_all_elements_IFS_joined(libbash_string, $libbash_value); } - |^(VAR_REF POUND) { std::cerr << "$# has not been implemented yet" << std::endl; } + |^(VAR_REF POUND) { $libbash_value = boost::lexical_cast<std::string>(walker->get_array_length("*")); } |^(VAR_REF QMARK) { $libbash_value = walker->get_status<std::string>(); } |^(VAR_REF MINUS) { std::cerr << "$- has not been implemented yet" << std::endl; } |^(VAR_REF BANG) { std::cerr << "$! has not been implemented yet" << std::endl; } diff --git a/scripts/var_def.bash b/scripts/var_def.bash index 1980681..0989f9a 100644 --- a/scripts/var_def.bash +++ b/scripts/var_def.bash @@ -35,7 +35,6 @@ ARRAY10="${ARRAY05[*]}" FOO001="networkmanager" FOO002="0.8.2" FOO003=${FOO001}-${FOO002} -FOO004=$# FOO004=$? FOO004=$- FOO004=$! diff --git a/scripts/var_def.bash.result b/scripts/var_def.bash.result index 5ab9882..b9b415e 100644 --- a/scripts/var_def.bash.result +++ b/scripts/var_def.bash.result @@ -1,4 +1,3 @@ -$# has not been implemented yet $- has not been implemented yet $! has not been implemented yet ARRAY01=1 2 3 4 5 diff --git a/scripts/var_expansion.bash b/scripts/var_expansion.bash index 1ac22b4..9f42f19 100644 --- a/scripts/var_expansion.bash +++ b/scripts/var_expansion.bash @@ -98,6 +98,7 @@ function positional_parameter_test(){ FOO094=${@: -1} FOO095=${@: -2:5} FOO096=${@:0} + echo $# } positional_parameter_test 1 2 3 4 5 target="abc*abc" @@ -108,3 +109,4 @@ echo ${target/"*"} ARRAY=(1 2 3 4 5) echo ${ARRAY[@]:1} echo ${ARRAY[@]:1:3} +echo $# diff --git a/scripts/var_expansion.bash.result b/scripts/var_expansion.bash.result index 31cca8d..bd83c62 100644 --- a/scripts/var_expansion.bash.result +++ b/scripts/var_expansion.bash.result @@ -1,8 +1,10 @@ +5 abcabc abcabc 2 3 4 5 2 3 4 +0 ARRAY=1 2 3 4 5 ARRAY2=hello EAPI=3 |