我正在尝试使用带有以下源代码的shell脚本创建一个xml文件。
#!/bin/sh
header=`<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<menu_details>`
fmt=` <menu name="%menuName">
<group name="%grpName" type="%M">
<page-details>
<page>
<page-name>%pageName</page-name>
</page>
</page-details>
</group>
</menu>
`
footer=`</menu_details>`
{
printf "%s\n" "$header"
while read menuName grpName M pageName
do
printf "$fmt" "$menuName" "$grpName" "$M" "$pageName"
done < "dd.lst"
printf "%s\n" "$footer"
} > dd.xml
这是正确的方法吗?
答案 0 :(得分:2)
您需要为多行字符串使用单引号。您用于printf的格式说明符也不正确:
#!/bin/sh
header='<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<menu_details>'
fmt=' <menu name="%s">
<group name="%s" type="%s">
<page-details>
<page>
<page-name>%s</page-name>
</page>
</page-details>
</group>
</menu>
'
footer='</menu_details>'
{
printf "%s\n" "$header"
while read menuName grpName M pageName
do
printf "$fmt" "$menuName" "$grpName" "$M" "$pageName"
done < "dd.lst"
printf "%s\n" "$footer"
}