Node:shellcommand classes, Neste:Feedback classes, Forrige:actionsequence classes, Opp:Defining classes
For more advanced uses of cfengine you might want to be able to
define a class on the basis of the success or failure of a user-program,
a shell command or user script. Consider the following example
groups: have_cc = ( "/bin/test -f /usr/ucb/cc" "/bin/test -f /local/gnu/cc" )
Note that as of version 1.4.0 of cfengine, you may use the word
classes
as an alias for groups
. Whenever cfengine meets
an object in a class list or variable, which is surrounded by either
single, double quotes or reversed quotes, it attempts to execute the
string as a command passed to the Bourne shell. If the resulting command
has return code zero (proper exit) then the class on the left hand side
of the assignment (in this case have_cc
) will be true. If the
command returns any other value (an error number) the result is
false. Since groups are the logical OR of their members (it is
sufficient that one of the members matches the current system), the
class have_cc
will be defined above if either /usr/ucb/cc
or /local/gnu/cc
exist, or both.