变量被删除为在bash文件中创建的文件

时间:2015-05-12 18:48:27

标签: linux bash shell

我有一个创建文件的部署脚本,它有点像这样:

#!/bin/bash
...
cat << EOF > nginx/test.conf
server {
    listen       80;
    server_name  domain.com;
    return       301 http://www.domain.com$request_uri;
}
EOF
...

但是,在部署脚本运行后创建文件时,它会输出:

的nginx / test.conf

...
server {
    listen       80;
    server_name  domain.com;
    return       301 http://www.domain.com;
}
...

如何通过从部署脚本创建结果来阻止它删除变量?

1 个答案:

答案 0 :(得分:2)

我假设您在询问如何在输出文件中获取返回以包含$request_uri当您使用cat时,shell正在尝试将$request_uri扩展为它具有的值,这可能是空的,所以它似乎消失了。如果您希望结果包含该字符串,则需要转义$以便它不会尝试扩展它

cat << EOF > nginx/test.conf
server {
    listen       80;
    server_name  domain.com;
    return       301 http://www.domain.com\$request_uri;
} 
EOF