变量中的新行

变量中的新行

我想用 .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

尝试替换echoprintf

domainconf='<VirtualHost *:80>\n ServerName '$fulldomain'\n DocumentRoot '$fullpath'\n </VirtualHost>'
printf "$domainconf" > /etc/apache2/sites-available/"$fulldomain".conf

相关内容