Quando você segue o documento:
xmlstarlet edit --help
você pode ler que --var
pode ser usado para declarar uma expressão XPath como uma variável.
Gerando arquivo moc:
cat<<EOF > /tmp/file.xml
<root>
<elt>x</elt>
<!-- comment -->
<elt>y</elt>
<!-- other comment -->
</root>
EOF
Este funciona, sem variáveis:
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
Este não edita com variáveis:
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
O que eu sinto falta de usar variável?
Use
'$xp'
para referenciar sua variável: