2017-03-13 4 views
3

여러 디렉토리를 탐색하고 XML 파일의 데이터를 구문 분석하는 bash 스크립트가 있습니다. 내 XQueries를 실행하기 위해 XQilla를 사용하고있다.bash에서 XQuery로 변수 전달

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

그리고 이것은 XQuery를이다 : 나는 CWD에 따라 다른 항목을 검색 할 수 있도록

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

가 어떻게 예를 들어, XQuery를에 bash는 스크립트에서 변수를 전달할 수 있습니다 ? (표준화는 XQuery 개념이다)

답변

2

사용 xqilla's -v option to pass an external variable : XQuery를에서

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

는 외부로 그 변수를 선언해야합니다.

xqilla -v foo bar test.xq 

을 그리고 스크립트의 헤더에 선언하여이 변수를 사용합니다 :

예를 들어, 값 bar으로 $foo 변수를 통과하는 XQuery에 스크립트를 호출

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