3

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

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,以便我可以根据 cwd 搜索不同的项目?

4

2 回答 2

2

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

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

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

例如,调用一个 XQuery 脚本,传递$foo带有 value 的变量bar

xqilla -v foo bar test.xq

并通过在脚本的标题中声明它来使用这个变量:

declare variable $foo external;

concat("Value of $foo is: ", $foo)
于 2017-03-13T20:36:31.487 回答
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
于 2017-04-23T17:19:49.983 回答