我必须编写一个Shell脚本来动态安装多个服务。我对shell脚本或unix shell通用知识不太了解,所以我确实需要一些帮助。这是我的外壳文件。
#!/bin/bash
# Ask the user for their name
echo What is the name of your domain?
read varname
echo You passed the domain name to your domain $varname successfully
这是我的nginx.conf文件。
server {
listen 80;
server_name $varname;
rewrite ^(.*) https://$server_name$1 permanent;
}
我想将varname
传递给nginx.conf文件,以根据用户输入来设置服务器名称。我该怎么办?
答案 0 :(得分:1)
能否请您尝试以下。这将从在线开始更改行上的值,该行具有server_name
的最后一个字段,由用户提供。
#!/bin/bash
# Ask the user for their name
echo What is the name of your domain?
read varname
awk -v var="$varname" '/^ +server_name/{$NF=var} 1' nginx.conf > temp && mv temp nginx.conf &&\
echo You passed the domain name to your domain $varname successfully
答案 1 :(得分:1)
您可以从heredoc创建文件nginx.conf
。
#!/bin/bash
# Ask the user for their name
echo What is the name of your domain?
read varname
cat > nginx.conf <<EOF
server {
listen 80;
server_name $varname;
rewrite ^(.*) https://\$server_name\$1 permanent;
}
EOF
echo You passed the domain name to your domain $varname successfully
注意:在rewrite
行中,我对$
字符进行了转义,以在输出中获取文字$
,而不是在shell变量中进行扩展。
如果我输入foobar
,将得到一个文件nginx.conf
,如下所示:
server {
listen 80;
server_name foobar;
rewrite ^(.*) https://$server_name$1 permanent;
}
答案 2 :(得分:1)
您可以为此使用blurfilter.blurRadiusInPixels
。
将envsubst
重命名为nginx.conf
,并将脚本更改为:
nginx.conf.template