在 cfengine 中,我有一个变量,设置为命令的输出。假设变量 myoutput 设置为“hi world”。我如何根据 myoutput 的内容执行命令。
我想做这样的事情(sudo cfengine 代码):
bundle agent test
{
vars:
"myoutput" string => execresult("echo 'hi world';","noshell");
commands:
myoutput=="hi world"::
"/usr/bin/php myaction.php";
}
答案1
有一个 strcmp() 函数可以实现这个功能:https://cfengine.com/archive/manuals/cf3-Reference#Function-strcmp
尝试这个:
bundle agent test
{
vars:
"expected" string => "hi world";
"myoutput" string => execresult("/bin/echo 'hi world'","noshell");
classes:
"equal" expression => strcmp($(myoutput),$(expected));
reports:
equal::
"output is AS expected: $(myoutput)";
# do other stuff
}
如果 execresult() 的输出与预期输出相同,则设置类“相等”。