我想用 .sh 文件创建一个配置文件。我不知道如何插入新行。
我已经有的代码:
domainconf='<VirtualHost *:80>\n ServerName '$fulldomain'\n DocumentRoot '$fullpath'\n </VirtualHost>'
echo $domainconf > /etc/apache2/sites-available/"$fulldomain".conf
答案1
如果您需要做的只是将配置写入文件,那么以下内容将更具可读性,并且不需要变量:
cat >/etc/apache2/sites-available/"$fulldomain".conf <<END_CONFIG
<VirtualHost *:80>
ServerName '$fulldomain'
DocumentRoot '$fullpath'
</VirtualHost>
END_CONFIG
如果你绝对需要变量中的东西:
conf=$(cat <<END_CONFIG
<VirtualHost *:80>
ServerName '$fulldomain'
DocumentRoot '$fullpath'
</VirtualHost>
END_CONFIG
)
echo "$conf" >/etc/apache2/sites-available/"$fulldomain".conf
答案2
另一种选择是在脚本中嵌入文字换行符:
% cat newl
blah='x
y
z'
echo "$blah"
% sh newl
x
y
z
%
请注意 上的引号$blah
!
答案3
只需使用“-e”标志进行回显
domainconf='<VirtualHost *:80>\n ServerName '$fulldomain'\n DocumentRoot '$fullpath'\n </VirtualHost>'
echo -e "$domainconf" > /etc/apache2/sites-available/"$fulldomain".conf
答案4
尝试替换echo
为printf
domainconf='<VirtualHost *:80>\n ServerName '$fulldomain'\n DocumentRoot '$fullpath'\n </VirtualHost>'
printf "$domainconf" > /etc/apache2/sites-available/"$fulldomain".conf