Problems With My Simple Write Conf Files Method

Home » CentOS » Problems With My Simple Write Conf Files Method
CentOS 5 Comments

I have been creating conf files and similar with the following method that I picked up (I think from psotfix docs):

cat <>/etc/aliases || exit 1
root: youremail EOF

See: http://medon.htt-consult.com/CentOS7-armv7.html

But with postfixadmin I stumbled onto a problem. The following:

cat </usr/share/postfixadmin/config.local.php || exit 1

EOF

produces:

cat </usr/share/postfixadmin/config.local.php || exit 1

That is the ‘$CONF’ gets processed.

What can I do to avoid this (and any other ‘gotchas’) or can someone provide an alternative?

thanks

5 thoughts on - Problems With My Simple Write Conf Files Method

  • I have never used this method per se, but in general in any script if you want to preserve the $ (dollar sign) or variable name you must use a backslash to preserve it. For example change your $CONF to \$CONF.  The $CONF should then be printed into your conf file. KM

    From: Robert Moskowitz
    To: CentOS@CentOS.org Sent: Tuesday, February 21, 2017 10:50 AM
    Subject: [CentOS] Problems with my simple write conf files method

    I have been creating conf files and similar with the following method that I picked up (I think from psotfix docs):

    cat < >/etc/aliases || exit 1
    root: youremail EOF

    See: http://medon.htt-consult.com/CentOS7-armv7.html

    But with postfixadmin I stumbled onto a problem.  The following:

    cat < /usr/share/postfixadmin/config.local.php || exit 1
    < ?php $CONF['database_type'] = 'mysqli'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = 'xyz'; $CONF['database_name'] = 'postfix'; $CONF['configured'] = true; ?>
    EOF

    produces:

    cat < /usr/share/postfixadmin/config.local.php || exit 1
    < ?php ['database_type'] = 'mysqli'; ['database_user'] = 'postfix'; ['database_password'] = 'xyz'; ['database_name'] = 'postfix'; ['configured'] = true; ?>

    That is the ‘$CONF’ gets processed.

    What can I do to avoid this (and any other ‘gotchas’) or can someone provide an alternative?

    thanks

  • great.

    From: Robert Moskowitz
    To: CentOS mailing list
    Sent: Tuesday, February 21, 2017 11:40 AM
    Subject: Re: [CentOS] Problems with my simple write conf files method

    Thanks that worked.

  • KMs method of escaping every $ in the here document works but a simpler method is to escape the EOF. That tells the shell not to do variable expansion in the document:

    cat < <\EOF>/usr/share/postfixadmin/config.local.php || exit 1

  • Thank you. I actually had problems with changes to
    /etc/postfix/master.cf where I have things like ${sender} that do not work as \${sender}. So mass changes of $ to \$ did not always work. :)

    Do I end with ‘EOF’ or \EOF’?

LEAVE A COMMENT