从Bash传递变量到XQuery

3

我有一个bash脚本,它遍历多个目录并从几个XML文件中解析数据。我使用XQilla来执行我的XQueries。

echo "---|Reading names|---"
../../xqilla .._name.fcs >> /var/lib/mysql-files/name.txt

这是XQuery:

for $fw in doc("./network_objects.xml")/network_objects/network_object
where $fw/interfaces/interfaces/ipaddr
return (data($fw/Name))

我怎样才能从bash脚本传递一个变量到XQuery中,这样我就可以根据当前工作目录搜索不同的项呢?
2个回答

2

使用xqilla 的-v选项来传递外部变量(这是一个标准化的XQuery概念):

-v <name> <value> : Bind the name value pair as an external variable

在 XQuery 中,请确保将该变量声明为外部的。

例如,调用一个 XQuery 脚本并传递值为 bar$foo 变量:

xqilla -v foo bar test.xq

在脚本的头部声明此变量,并使用它:

declare variable $foo external;

concat("Value of $foo is: ", $foo)

0
#!/bin/dash

echo "Alpha
Bravo
Charlie
Delta" |
while read name; do
    echo "/network_objects/network_object[Name='$name'][interfaces/interface/ipaddr]/Name/string()" |
        xqilla -i ./network_objects.xml /dev/stdin
done

虽然这段代码片段可能解决了问题,但包括解释真的有助于提高您的帖子质量。请记住,您正在为未来的读者回答问题,而这些人可能不知道您的代码建议原因。 - jmattheis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接