我需要在bash中生成一个XML文件(我是bash /脚本语言的新手,尽管在C / C ++ / UNIX上工作了一段时间)。现在,我正在生成这样的东西,这是非常平坦的
st='<'
et='>'
sl='/'
-------------------
stag() {
text=$st$1$et
echo $text >> output_file
}
--------------------
etag() {
text=$sl$1
stag $text
}
--------------------
attr() {
text=$1
echo $text >> output_file
}
--------------------
#--Function Call
stag "tag"
attr "xml"
etag "tag"
--------------------
#--output
<tag>xml</tag>
在这一点上,我觉得有很多机会犯错误,并且在C ++编码很长时间后,我认为应该有一种更好的结构化代码方式......任何想法都值得赞赏....或任何你认为的材料,我应该先学习,请在这里发帖....谢谢......
答案 0 :(得分:3)
您正在寻找xmlstarlet之类的内容。 depyx 子命令允许您将PYX markup转换为XML。
这可能足以用于您的原型设计。如果没有,您可能需要在Ruby,Python或Perl中查看功能更全面的XML库。
答案 1 :(得分:0)
引用字符串通常更容易,而不必为特殊字符使用特殊变量,例如,而不是
text=$st$1$et
echo $text
只需使用
echo "<$1>"
或 printf“&lt;%s&gt;” $ 1
至于结构,bash确实有可能用于属性的数组,但是将它们传递给函数的唯一方法是按名称,然后你必须跳过箍来获取值:
a=(foo bar baz)
f() {
eval printf "\${$1[1]}"
}
f a
=> bar