当您按照文档操作时:
xmlstarlet edit --help
您可以阅读它--var
可用于将 XPath 表达式声明为变量。
生成moc文件:
cat<<EOF > /tmp/file.xml
<root>
<elt>x</elt>
<!-- comment -->
<elt>y</elt>
<!-- other comment -->
</root>
EOF
这个可以在没有变量的情况下工作:
xmlstarlet edit \
--var xp '//elt/following::comment()' \
-a '//elt/following::comment()' -t elem -n p -v 'some new text' \
-a '//elt/following::comment()' -t elem -n p -v 'some other text' \
/tmp/file.xml
这个不使用变量进行编辑:
xmlstarlet edit \
--var xp '//elt/following::comment()' \
-a xp -t elem -n p -v 'some new text' \
-a xp -t elem -n p -v 'some other text' \
/tmp/file.xml
使用变量我错过了什么?
答案1
用于'$xp'
引用您的变量:
xmlstarlet edit \
--var xp '//elt/following::comment()' \
-a '$xp' -t elem -n p -v 'some new text' \
-a '$xp' -t elem -n p -v 'some other text' \
/tmp/file.xml