如何从xml文件中获取特定数据?

时间:2014-11-20 09:12:32

标签: linux bash shell

从命令行,以下命令可以正常工作:

  回声' cat   //volume_trustees/*[contains(translate(.,"SMITH","smith"),"smith")]' | xmllint --shell /path/database.xml

但我想把它放到一个shell脚本中,搜索项目作为参数。 但我不知道如何让它发挥作用:

  

y = $ 1

     

up =" $(echo $ y | tr' A-Z'' a-z')"

     

lo =" $(echo $ y | tr' a-z'' A-Z')"

     

echo' cat //volume_trustees/*[contains(translate(.,$up,$lo),$lo)]' | xmllint --shell /path/database.xml

这会显示以下错误消息:

xmlXPathCompOpEval: parameter error
XPath error : Stack usage errror
XPath error : Invalid operand
XPath error : Stack usage errror
XPath error : Invalid type
xmlXPathEval: 1 object left on the stack
//volume_trustees/*[contains(translate(.,$up,$lo),$lo)]: no such node

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您需要echo上的双引号(也应该在y作业中使用双引号)

y="$1"

echo "cat //volume_trustees/*[contains(translate(.,$up,$lo),$lo)]" | xmllint --shell /path/database.xml

echo中包含single-quotes字符串会阻止$up,$lo and $lo的扩展。