Forum: CFEngine Help
Subject: Re: array indexes and order. Do we need sort?
Author: sauer
Link to topic: https://cfengine.com/forum/read.php?3,26932,26956#msg-26956
Oddly enough, I was just composing a post asking for the same thing (a sort
function). Because of the probability of a response which indicated "you
shouldn't do things that require a specific order in CFEngine; solve the
problem differently", I was thinking that the workaround would probably use
this knowledge:
sauer@pyro:~$ perl -le '$,=q{ };print sort @ARGV' 4 1 3 2
1 2 3 4
To do something like this:
sauer@pyro:~/Documents/cfengine_test$ cat ./sort_test.cf
bundle agent sort_test {
vars:
"a[4]" string => "four";
"a[1]" string => "one";
"a[3]" string => "three";
"a[2]" string => "two";
"a_nosort"
slist => getindices( "a" );
"a_nosort_concat"
string => join( " ", "a_nosort" );
"sorter"
string => "/usr/bin/perl -le '$,=q{ };print sort @ARGV'";
"a_sort_tmp"
string => execresult( "$(sorter) $(a_nosort_concat)", "noshell" );
"a_sorted"
slist => splitstring( "$(a_sort_tmp)", "\s", "inf" );
"a_sorted_concat"
string => join( " ", "a_sorted" );
reports:
cfengine::
"unsorted list: $(a_nosort_concat)";
"sorted list: $(a_sorted_concat)";
"sorted element: $(a[$(a_sorted)])";
}
sauer@pyro:~/Documents/cfengine_test$ cf-agent -K -b sort_test -f ./sort_test.cf
R: unsorted list: 4 1 3 2
R: sorted list: 1 2 3 4
R: sorted element: one
R: sorted element: two
R: sorted element: three
R: sorted element: four
It seems from my fairly limited testing that the elements of the array are
processed by getindices in the order that they're declared in the file; if
they're declared in order, they look like they pretty much stay in order.
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine