新建1.sh文件,最好是在linux环境下,windows拷过去带中文的会乱码
#!/bin/bash # Author:Jasy # 批量从1文件取主机名作变量并复制和命名新的xml文件,替换xml文件里的空值实际关联资产为该主机名,替换xml记录里的某某服务器为该主机名服务器 # 注意:1文件一行一个名字,并set ff=unix,源xml文件里的实际关联资产需为空(4个空格),源xml记录的某某服务器统一为1服务器 for name in `cat 1`; do cp 07.安全计算环境-服务器和终端-1.xml 07.安全计算环境-服务器和终端-$name.xml sed -i "s% <\/实际关联资产>%$name<\/实际关联资产>%g" 07.安全计算环境-服务器和终端-$name.xml sed -i "s%1服务器%$name服务器%g" 07.安全计算环境-服务器和终端-$name.xml done
目录下是这些文件:
1.sh
07.安全计算环境-服务器和终端-1.xml作为源xml文件,需要如下设置:
1、结果记录里涉及到某某服务器统一为1服务器;2、实际关联资产字段的中间为空(默认就是4个空格)
1文件:
使用./1.sh执行,大概几秒钟就可以执行完成
随便找个打开看下,已经替换完成
在调试脚本出现过几个报错,做个记录:
1、当sed中有变量时,sed -i 后面需要用两个双引号"括起来(单引号报错)
2、替换后的变量老是有^M和其他多余字符,是因为windows复制过去的1文件是默认dos格式,需要set ff=unix即可
3、sh文件有乱码也类似,从windows拷过去的执行会报错,cat看是乱码,基本是中文乱码,需要改成utf-8,执行 iconv -f gbk -t utf8 2.sh >3.sh 这个命令,生成3.sh即可