1. 判断没有文件夹就创建
if [ ! -d "$path" ]; then
mkdir -p $path
fi
2.在文件的指定行插入多行文本
#获取第一个启动标签的行号 //这里举例,目的是自己通过手段获取出行号即可
num=`cat "${path}.bak" | grep -n "menuentry " | awk -F: 'NR==1{print $1}'`
#获取uuid //我这里需要uuid 你们自己根据自己的情况做处理
uuid=`blkid | grep boot | awk -F'"' '{print $4}'`
#需要插入的内容 str 注意其中的规则: 特殊字符需要转义符\
#如果需要换行,则需要在末尾添加 \\n\ 解释:\\n 换行符,转义了一次\; 最后的\是连接下一行的符号
str="menuentry 'Linux GNU/Linux' --class \{\\n\
load_video\\n\
insmod gzio\\n\
insmod part_msdos\\n\
insmod ext2\\n\
set root='hd0,msdos1'\\n\
if [ x\$feature_platform_search_hint = xy ]; then\\n\
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 0eb2a957-3bb9-42dc-b065-59c8ba51ec15\\n\
else\\n\
search --no-floppy --fs-uuid --set=root 0eb2a957-3bb9-42dc-b065-59c8ba51ec15\\n\
fi\\n\
echo 'Loading Linux 3.10.0 ...'\\n\
linux /ivmlinuz console=ttyS0,115200 console=tty0 net.ifnames=0 biosdevname=0 crashkernel=auto rdloaddriver=ahci rdloaddriver=megaraid_sas scsi_mod.scan=sync boot-uuid=${uuid} sangfor-chuyun-boot-fs=ext3\\n\
echo 'Loading initial ramdisk ...'\\n\
initrd /initramfs.img\\n\
\}"
#sed -i 进行替换:在${path}文件中,用${str}的多行字符串替换第${num} 行的内容
sed -i "${num} i ${str}" ${path}