ktest.pl: Process variables within variables
Allow a variable to contain another variable. This will allow the ${shell <command>} to have its command include variables. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
90d35da658
commit
ca8edb78c1
|
@ -792,13 +792,13 @@ sub process_variables {
|
|||
my $retval = "";
|
||||
|
||||
# We want to check for '\', and it is just easier
|
||||
# to check the previous characet of '$' and not need
|
||||
# to check the previous character of '$' and not need
|
||||
# to worry if '$' is the first character. By adding
|
||||
# a space to $value, we can just check [^\\]\$ and
|
||||
# it will still work.
|
||||
$value = " $value";
|
||||
|
||||
while ($value =~ /(.*?[^\\])\$\{(.*?)\}(.*)/) {
|
||||
while ($value =~ /(.*?[^\\])\$\{([^\{]*?)\}(.*)/) {
|
||||
my $begin = $1;
|
||||
my $var = $2;
|
||||
my $end = $3;
|
||||
|
@ -818,16 +818,20 @@ sub process_variables {
|
|||
# we simple convert to 0
|
||||
$retval = "${retval}0";
|
||||
} else {
|
||||
# put back the origin piece.
|
||||
$retval = "$retval\$\{$var\}";
|
||||
# put back the origin piece, but with $#### to not reprocess it
|
||||
$retval = "$retval\$####\{$var\}";
|
||||
# This could be an option that is used later, save
|
||||
# it so we don't warn if this option is not one of
|
||||
# ktests options.
|
||||
$used_options{$var} = 1;
|
||||
}
|
||||
$value = $end;
|
||||
$value = "$retval$end";
|
||||
$retval = "";
|
||||
}
|
||||
$retval = "$retval$value";
|
||||
$retval = $value;
|
||||
|
||||
# Convert the saved variables with $####{var} back to ${var}
|
||||
$retval =~ s/\$####/\$/g;
|
||||
|
||||
# remove the space added in the beginning
|
||||
$retval =~ s/ //;
|
||||
|
|
Loading…
Reference in New Issue