将变量从 bash 传递到 XQuery
Passing variable from bash to XQuery
我有一个 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-script 传递到 XQuery,以便我可以搜索不同的项目,例如,取决于 cwd?
使用xqilla's -v
option to pass an external variable(这是一个标准化的XQuery概念):
-v <name> <value> : Bind the name value pair as an external variable
在 XQuery 中,确保将该变量声明为外部变量。
例如,调用 XQuery 脚本传递值为 bar
的 $foo
变量:
xqilla -v foo bar test.xq
并通过在脚本的 header:
中声明它来使用该变量
declare variable $foo external;
concat("Value of $foo is: ", $foo)
#!/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
我有一个 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-script 传递到 XQuery,以便我可以搜索不同的项目,例如,取决于 cwd?
使用xqilla's -v
option to pass an external variable(这是一个标准化的XQuery概念):
-v <name> <value> : Bind the name value pair as an external variable
在 XQuery 中,确保将该变量声明为外部变量。
例如,调用 XQuery 脚本传递值为 bar
的 $foo
变量:
xqilla -v foo bar test.xq
并通过在脚本的 header:
中声明它来使用该变量declare variable $foo external;
concat("Value of $foo is: ", $foo)
#!/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