![使用 echo >> 折叠空白](https://linux22.com/image/1348113/%E4%BD%BF%E7%94%A8%20echo%20%3E%3E%20%E6%8A%98%E5%8F%A0%E7%A9%BA%E7%99%BD.png)
我正在创建一个脚本,用于读取文件内容、操作内容并附加到另一个文件(特别是虚拟主机文件)。输出文件中的格式和空格很重要,但是当我写入内容时,空格会被删除。
VHOST_PATH="/etc/apache2/extra/httpd-vhosts.conf"
TEMPLATE_PATH="./template.conf"
TEMPLATE=$(<TEMPLATE_PATH)
# manipulating $TEMPLATE
echo $TEMPLATE #outputs correct whitespace
echo $TEMPLATE >> $VHOST_PATH #does not output correct whitespace
因此第一个回声会产生类似
<VirtualHost *:80>
ServerAdmin webmaster@domain
DocumentRoot "root/web"
ServerName domain
ErrorLog "root/logs/error_log"
</VirtualHost>
但进入文件的字符串是
<VirtualHost *:80> ServerAdmin webmaster@domain DocumentRoot "root/web" ServerName domain ErrorLog "root/logs/error_log" </VirtualHost>
如何在附加到目标文件时保留空格?我已经搜索过这个问题,但如果不重写,所有类似的问题都不适用于我的脚本。
答案1
与其他程序一样,echo 将空格分隔的字符串解释为不同的参数。
拨打电话后
echo foo bar
shell 传递给 echo 的唯一数据是第一个参数是foo
,第二个参数是bar
。
要将包含空格的整个字符串作为单个参数传递,请将其括在双引号中:
echo "foo bar"
将打印所有四个空格。