В cfengine у меня есть переменная, которая задает вывод команды. Допустим, для переменной myoutput установлено значение «привет мир». Как я могу выполнить команду на основе содержимого myoutput.
Я бы хотел сделать что-то вроде этого (код sudo cfengine):
bundle agent test
{
vars:
"myoutput" string => execresult("echo 'hi world';","noshell");
commands:
myoutput=="hi world"::
"/usr/bin/php myaction.php";
}
Для этого есть функция 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 () совпадает с ожидаемым.