1

我有一个 bash 脚本,它在后缀 main.cf 文件中回显

IPADD=$(ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}')
cat << EOG > /etc/postfix/main.cf
# LOCAL PATHNAME INFORMATION
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix

# QUEUE AND PROCESS OWNERSHIP
mail_owner = postfix
# SENDING MAIL
myorigin = $mydomain

# RECEIVING MAIL
mydestination = $myhostname localhost.$mydomain localhost $mydomain
# TRUST AND RELAY CONTROL
mynetworks_style = host
smtp_bind_address = $IPADD
inet_interfaces = $IPADD, 127.0.0.1

EOG

问题是,一旦您运行脚本,它就会从以下位置删除“$mydomain”:

 # SENDING MAIL
    myorigin = $mydomain

并且还去掉了“$myhostname”和“$mydomain”

# RECEIVING MAIL
    mydestination = $myhostname localhost.$mydomain localhost $mydomain

我希望 $IPADD 能够工作和运行,但希望它忽略 $mydomain 和 $myhostname 前面的“$”。

这可能吗?

4

2 回答 2

3
cat << 'EOG' > /etc/postfix/main.cf
# other stuff
myorigin = $mydomain
# other stuff
EOG

这里文档

于 2013-05-03T09:29:34.610 回答
0

使用$(echo '$a')可以解决问题:

a=1
cat  << EOF > /etc/postfix/main.cf
> test=$(echo '$a')
> foo=$a
> EOF

输出:

test=$a
foo=1
于 2013-05-03T09:38:47.847 回答