StrCmp and RegCmp Pitfall

From Cfwiki

Jump to: navigation, search

The following is a code example shows how if you leave a space it will no work correctly.

control:

    actionsequence = ( shellcommands )

    sysnav_homedir = ( ExecResult(/bin/sh -c "/usr/bin/getent passwd sysnav | /usr/bin/awk -F: '{ print $6 }'") )

groups:

    homedir_is_home_sysnav_dir_1 = ( StrCmp("/usr/local/sysnav", "${sysnav_homedir}") )
    homedir_is_home_sysnav_dir_2 = ( StrCmp("/usr/local/sysnav","${sysnav_homedir}") )
    homedir_is_home_sysnav_dir_3 = ( StrCmp(/usr/local/sysnav, ${sysnav_homedir}) )
    homedir_is_home_sysnav_dir_4 = ( StrCmp(/usr/local/sysnav,${sysnav_homedir}) )
    homedir_is_home_sysnav_dir_5 = ( RegCmp("/usr/local/sysnav", "${sysnav_homedir}") )
    homedir_is_home_sysnav_dir_6 = ( RegCmp("/usr/local/sysnav","${sysnav_homedir}") )
    homedir_is_home_sysnav_dir_7 = ( RegCmp(/usr/local/sysnav, ${sysnav_homedir}) )
    homedir_is_home_sysnav_dir_8 = ( RegCmp(/usr/local/sysnav,${sysnav_homedir}) )

shellcommands:

    homedir_is_home_sysnav_dir_1::
        "/bin/echo     homedir_is_home_sysnav_dir_1 successful."

    !homedir_is_home_sysnav_dir_1::
        "/bin/echo     homedir_is_home_sysnav_dir_1 failed."

    homedir_is_home_sysnav_dir_2::
        "/bin/echo     homedir_is_home_sysnav_dir_2 successful."

    !homedir_is_home_sysnav_dir_2::
        "/bin/echo     homedir_is_home_sysnav_dir_2 failed."

    homedir_is_home_sysnav_dir_3::
        "/bin/echo     homedir_is_home_sysnav_dir_3 successful."

    !homedir_is_home_sysnav_dir_3::
        "/bin/echo     homedir_is_home_sysnav_dir_3 failed."

    homedir_is_home_sysnav_dir_4::
        "/bin/echo     homedir_is_home_sysnav_dir_4 successful."

    !homedir_is_home_sysnav_dir_4::
        "/bin/echo     homedir_is_home_sysnav_dir_4 failed."

    homedir_is_home_sysnav_dir_5::
        "/bin/echo     homedir_is_home_sysnav_dir_5 successful."

    !homedir_is_home_sysnav_dir_5::
        "/bin/echo     homedir_is_home_sysnav_dir_5 failed."

    homedir_is_home_sysnav_dir_6::
        "/bin/echo     homedir_is_home_sysnav_dir_6 successful."

    !homedir_is_home_sysnav_dir_6::
        "/bin/echo     homedir_is_home_sysnav_dir_6 failed."

    homedir_is_home_sysnav_dir_7::
        "/bin/echo     homedir_is_home_sysnav_dir_7 successful."

    !homedir_is_home_sysnav_dir_7::
        "/bin/echo     homedir_is_home_sysnav_dir_7 failed."

    homedir_is_home_sysnav_dir_8::
        "/bin/echo     homedir_is_home_sysnav_dir_8 successful."

    !homedir_is_home_sysnav_dir_8::
        "/bin/echo     homedir_is_home_sysnav_dir_8 failed."

If you run this code you will see the resulting output:

cfengine::/bin/echo     h: homedir_is_home_sysnav_dir_1 failed.
cfengine::/bin/echo     h: homedir_is_home_sysnav_dir_2 successful.
cfengine::/bin/echo     h: homedir_is_home_sysnav_dir_3 failed.
cfengine::/bin/echo     h: homedir_is_home_sysnav_dir_4 successful.
cfengine::/bin/echo     h: homedir_is_home_sysnav_dir_5 failed.
cfengine::/bin/echo     h: homedir_is_home_sysnav_dir_6 successful.
cfengine::/bin/echo     h: homedir_is_home_sysnav_dir_7 failed.
cfengine::/bin/echo     h: homedir_is_home_sysnav_dir_8 successful.

Personal tools