augeas:在 httpd.conf 中的注释后插入指令

augeas:在 httpd.conf 中的注释后插入指令

我试图在 httpd.conf 中的相应注释后插入一个 ServerName 指令:

#ServerName www.example.com:80

失败了:

defvar sncomment /files/etc/httpd/conf/httpd.conf/#comment[.= 'ServerName  www.example.com:80']
ins directive after $sncomment
defvar snentry /files/etc/httpd/conf/httpd.conf/directive[preceding-sibling::*[1][$sncomment]]
set $snentry 'ServerName'
set $snentry/arg 'www.domain:80'

$sncomment 匹配正确的行,并在树中的正确位置插入一个空白指令,但 $snentry 匹配树中的每个指令,而不仅仅是插入的指令。我如何才能仅匹配插入的指令?

谢谢

答案1

有一种更简单的方法来匹配刚刚插入的指令:

defvar snentry /files/etc/httpd/conf/httpd.conf/directive[. = '']

只要树中没有其他空白指令,此方法就可以正常工作。但是,如果有人能发现我的代码中的错误,我仍然希望能够正确使用前导同级语法。

相关内容