如何在变量而不是文件中将xml传递给xmllint?

sak*_*kal 3 shell

我想做这个

xmllint --xpath "//filestodelete[filename = somename]/text()" #filestodelete#  
Run Code Online (Sandbox Code Playgroud)

和filestodelete是XML类型的BPEL变量

但它不起作用

怎么做> ??

Cha*_*ffy 7

假设您已将查询文本放在名为的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)