【发布时间】:2021-03-09 21:19:55
【问题描述】:
我的问题是我想在 config.xml 中的特定行上写入 $i 的值,请参见下面的 config.xml 结构。 另外,我希望所有行都在另一行之下,而不是在同一行中。
#!/bin/bash
NAME_ID=( User1 User2 User3 )
USER_CONF=/opt/test/config.xml
for i in "${NAME_ID[@]}"; do
printf '<user><id>ID</id><name><%s/name></user>\n' "$i" >> "$EXTERNAL_USER_CONF"
done
config.xml 结构如下(我想将所有三行插入另一行下方,其中显示 USER_TO_INSER_HERE 但我最终得到它们):
<company type="external">
<enabled>true</enabled>
<users type="allowed">
USER_TO_INSERT_HERE
</users>
</company>
<domain><id>ID</id><name><User1/name></domain>
<domain><id>ID</id><name><User2/name></domain>
<domain><id>ID</id><name><User3/name></domain>
我期望的最终结果是:
<company type="external">
<enabled>true</enabled>
<users type="allowed">
<domain><id>ID</id><name><User1/name></domain>
<domain><id>ID</id><name><User2/name></domain>
<domain><id>ID</id><name><User3/name></domain>
</users>
</company>
【问题讨论】:
-
on a specific lines具体是哪几行?要修改 XML 文件,请使用 XML 感知工具,例如xmlstarlet。<company="external">和<users="allowed">也是无效的 XML。 -
谢谢@KamilCuk 刚刚修正了你的建议,你是对的我忽略了 xml,因为我试图专注于我更大的问题。