2
我想在以字DocumentRoot
開頭的特定行之後插入一段文本。如何使用bash在特定行之後插入文本?
這是原文(文件名爲li1023-68.members.linode.com
):
<VirtualHost *:80>
ServerName li1023-68.members.linode.com
DocumentRoot /srv/www/li1023-68.members.linode.com/public_html/
ErrorLog /srv/www/li1023-68.members.linode.com/logs/error.log
CustomLog /srv/www/li1023-68.members.linode.com/logs/access.log combined
</VirtualHost>
這就是我想要達到的目標:
<VirtualHost *:80>
ServerName li1023-68.members.linode.com
DocumentRoot /srv/www/li1023-68.members.linode.com/public_html/
<Directory /srv/www/$path/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /srv/www/li1023-68.members.linode.com/logs/error.log
CustomLog /srv/www/li1023-68.members.linode.com/logs/access.log combined
</VirtualHost>
我試着用下面的代碼這樣做,它不會工作。 $path
認爲,應該修改的文本的名稱(即li1023-68.members.linode.com
):
value="<Directory /srv/www/$path/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>"
sed '/DocumentRoot.*$/a $value' /etc/apache2/sites-available/$path
while read line
do
echo $line
echo $line | grep -q "DocumentRoot"
[ $? -eq 0 ] && echo "$value"
done < $path
我缺少什麼?
感謝亞當的答案,但我得到一個錯誤「的sed:-e表達式#1,字符33:未知選項's'「 – Tom
哈!我認爲sed在目錄名稱中看到了斜線,並認爲它們是命令的一部分。我會更新我的答案;抱歉。 –
也循環不起作用:/ – Tom