awk中动态赋值问题,求教各位大神了!!!!

zys09 2013-12-17 09:10:34
#!/bin/sh

echo "<H><R><ID>NAME</ID><ID>TOTAL</ID><ID>USED</ID><ID>FREE</ID><ID>usePercent</ID></R>"
echo "<R><T>04</T><T>03</T><T>03</T><T>03</T><T>09</T></R></H><B>"

VGNAME="";

lsvg -o | while read line
do
#VGNAME=rootvg:cmsvg1:cmsvg2:

VGNAME="$VGNAME$line:";
eval $(lsvg $line | awk -v NAME=$line 'BEGIN{FSV[1]=0;FSV[2]=0;FSV[3]=0;}{
if(NR==3){
FSV[1]=substr($7,2);
}else if(NR == 4){
FSV[2]=substr($7,2);
}else if(NR == 5){
FSV[3]=substr($6,2);
}
}END{
print NAME"="NAME"-"FSV[1]"-"FSV[2]"-"FSV[3]"-"(FSV[3]/FSV[1])*100;
}')
done

#echo "$rootvg" | awk -F '-' '{printf("%s %s",$1,$2)}'


echo $VGNAME | awk -v vgname=$VGNAME 'BEGIN{n=split(vgname,names,":");}
{
for(i=1;i<n;i++){
if(names[i]!=""){
name=names[i];
#name的值=rootvg
print name;
#下面一行打印的是rootvg的值
print "'$rootvg'";
#printf("'$name'") 怎么才能让着句代码也输出rootvg的值?? 简单的说就是name是一个变量,动态替换name的值?
printf("'$name'");
}
}
}'

echo "</B>"
...全文
1441 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljc007 2013-12-18
  • 打赏
  • 举报
回复
举个例子:
VGNAME=rootvg:cmsvg1:cmsvg2:
rootvg=CSDN
echo $VGNAME | awk -F: -v myvg=$rootvg '{
    for(i=1;i<=NF;i++){
        if($i=="rootvg"){
            print $i" --- "myvg
        }else{
            print $i
        }
    }
}'

1,194

社区成员

发帖
与我相关
我的任务
社区描述
该论坛主要探讨IBM AIX平台的安装、部署、应用开发等话题,并为网友们提供自由交流的平台。
社区管理员
  • IBM AIX社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧