我想做这个
xmllint --xpath "//filestodelete[filename = somename]/text()" #filestodelete#
Run Code Online (Sandbox Code Playgroud)
和filestodelete是XML类型的BPEL变量
但它不起作用
怎么做> ??
假设您已将查询文本放在名为的shell变量中query
(以使我的示例更加简洁) -
使用bash,您可以使用herestring:
xmllint --xpath "$query" - <<<"$filestodelete"
Run Code Online (Sandbox Code Playgroud)
使用POSIX sh,您需要使用heredoc:
xmllint --xpath "$query" - <<EOF
$filestodelete
EOF
Run Code Online (Sandbox Code Playgroud)
顺便说一句 - 由于并非所有版本的xmllint
支持--xpath
,如果您使用的是XMLStarlet,那么您将在各个版本之间获得更好的兼容性,它最初创建时支持以下内容:
xmlstarlet sel -t -m "$query" -v . <<<"$filestodelete"
Run Code Online (Sandbox Code Playgroud)