설명서를 따르면:
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