2017-03-13 15 views
3

私は複数のディレクトリを横断し、いくつかのXMLファイルからデータを解析するbashスクリプトを持っています。 XQuillaを使用してXQueryを実行しています。bashから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)) 

私は例えば、CWDに応じて、さまざまなアイテムを検索できるように、どのように私は、XQueryのにはbashスクリプトから変数を渡すことができます?

答えて

2

使用xqilla's -v option to pass an external variable(標準化されたXQuery概念である):XQueryで

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

、外部のように、その変数を宣言してください。例えば

、値bar$foo変数を渡すのXQueryスクリプトを呼び出す:

xqilla -v foo bar test.xq 

、スクリプトのヘッダーにそれを宣言することで、この変数を使用します。

declare variable $foo external; 

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

ありがとうございました!出来た。 –

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 
+0

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)は本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 – jmattheis

関連する問題