[Emuelec]使xmlstartlet为gameList.xml添加sortname字段

 将gamelist.xml中的name字段中的拼音首字母索引去除后,添加到sortname字段中

## filename: addsortname.sh [gamelist.xml的路径,默认为当前路径下的gamelist.xml]
## 使用举例:./addsortname.sh /path/to/gamelist.xml
## 功能:给game元素增加sortname字段,内容为去除name中的[**]

gamelistpath="${1:-gamelist.xml}"
echo "${gamelistpath}"
# 修改编码为utf-8,以支持中文, macos请使用gsed,安装方法:brew install gsed
sed -i '1c \' "${gamelistpath}"
# 给game元素增加sortname字段,内容为去除name中的[**]
gameList=`xmlstarlet sel -t \
--value-of '/gameList/game/name' \
--nl "${gamelistpath}"`

OLDIFS="$IFS"  #备份旧的IFS变量
IFS=$'\n' #处理游戏名中带空格的情况
# 逐个添加sortname元素
for game in ${gameList}
do
    echo "处理游戏名:"${game}
    xmlstarlet ed -L -i \
    "/gameList/game[name = \"${game}\"]/name" \
    -t elem \
    -n "sortname" \
    -v "${game%%[*}" \
    "${gamelistpath}"
done
IFS="$OLDIFS"  #还原IFS变量

如果结果出现乱码,需将gameList.xml开头设置为utf-8编码

xmlstartlet引用shell变量失败的问题解决办法:

Bash xmlstarlet +变量不起作用(Bash xmlstarlet + variable not work)_电脑培训

你可能感兴趣的:(shell,linux运维,bash,开发语言)