今天在LU论坛里为别人解决了一个脚本的问题,记录如下。
写脚本的目的:
1、希望定时做ROOTVG的备份,但它做了MIRROR,所以想先把里面lv的信息改掉,才开始做mksysb。
2、image.data里要根据每个stanza的COPIES决定是否需要除以1、除以2,甚至除以3来改PP数。
#/usr/bin/ksh
# author: beginner@yeah.net http://blog.chinaunix.net/index.php?blogId=739
export IFS='\'
#or use export IFS='&'
while read line;do
if [ "$(echo $line |awk -F"= " '{print }')" = "[ ]*COPIES" ]
then
copys=$(echo $line |awk -F"= " '{print }')
fi
echo $line |awk 'BEGIN{OFS=FS="= "}{if(=="[ ]*PP") print ,/copys; else print }' copys=$copys
done<image.data
脚本很简单,唯一要说明的是export IFS='\'这行。本来我想用export IFS='\n'来的,但AIX好象和其它的UNIX不太一样,在这里把“\n”看作是字符“n”(或两个字符“\”、“n”),而不是换行符,这样将导致脚本输出的文件中字符“n”都不见了。不过解决不了的问题可以绕过去,用export IFS='\'或export IFS='&'就好了,因为我知道image.data这个文件里出现“\”和“&”的可能性不大。
BLOG好象贴的脚本有丢字符的问题,所以我做了个附件在这里。
http://blog.chinaunix.net/resserver.php?blogId=739&resource=image.txt