aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMu Qiao <qiaomuf@gentoo.org>2011-06-09 23:21:30 +0800
committerMu Qiao <qiaomuf@gentoo.org>2011-06-11 16:51:16 +0800
commit9f31ac2104a97e7f12cdc10f27037996041f20c6 (patch)
treea6052636942c569da91fd308c6d912b6267763de
parentWalker: reimplement positional parameter (diff)
downloadlibbash-9f31ac2104a97e7f12cdc10f27037996041f20c6.tar.gz
libbash-9f31ac2104a97e7f12cdc10f27037996041f20c6.tar.bz2
libbash-9f31ac2104a97e7f12cdc10f27037996041f20c6.zip
Walker: support $#
-rw-r--r--bashast/libbashWalker.g2
-rw-r--r--scripts/var_def.bash1
-rw-r--r--scripts/var_def.bash.result1
-rw-r--r--scripts/var_expansion.bash2
-rw-r--r--scripts/var_expansion.bash.result2
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