我们想从 XML 文件中读取 XML 属性。文件内容示例如下:
<properties>
<property name="abc" value="15"/>
<property name="xyz" value="26"/>
</properties>
我们想使用 shell 脚本读取属性“abc”的值(即 15)。
请建议 shell 命令来实现这一点。
最佳答案
您可以使用合适的 XML 解析器,例如 xmllint。如果您的版本支持 xpath,将很容易获取特定值。如果它不支持 xpath,那么你可以像这样使用 --shell
选项:
$ echo 'cat //properties/property[@name="abc"]/@value' | xmllint --shell myxml
/ > -------
value="15"
/ >
然后您可以使用 awk
或 sed
格式化并从输出中提取所需的字段。
$ echo 'cat //properties/property[@name="abc"]/@value' | xmllint --shell myxmlfile | awk -F'[="]' '!/>/{print $(NF-1)}'
15
您可以使用命令替换来捕获变量中的输出:
$ myvar=$(echo 'cat //properties/property[@name="abc"]/@value' | xmllint --shell myxml | awk -F'[="]' '!/>/{print $(NF-1)}')
$ echo "$myvar"
15
使用除 xmlparser 之外的任何其他东西很容易出错并且很容易崩溃。
关于bash - Shellscript 读取 XML 属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25508512/