免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1884 | 回复: 3

[文本处理] 赋值好的数组,第二次调用时为0 [复制链接]

论坛徽章:
0
发表于 2018-09-23 00:50 |显示全部楼层
为什么我第一次调用iops_numjobs_1[0]和iops_numjobs_2[0]和iops_numjobs_3[0]和iops_numjobs_4[0]正常输出;
第二次在循环外调用时则为0了呢,就好像从未赋值过。
  1. function numjobs_4_result()
  2. {
  3. printf "have turn to numjobs_4_result"
  4. for rw in randwrite randread write read
  5. do
  6.   for bs in 4k 16k 128k 1M
  7.     do
  8.       for iodepth in 1 8
  9.         do
  10.           for size in 30% 50% 85%
  11.             do
  12.               #for dev in `lsscsi|awk -F '/' '{print $NF}'`
  13.               for dev in sdz
  14.                do
  15.                   ls $Cur_Dir/result/dev/$dev|grep "^$rw-$bs-4-$iodepth-$size--log2_iops."|cut -d "." -f 2 |while read line
  16.                    do
  17.                      log_num=`echo $line%4|bc`
  18.                      if [ "$log_num" == 1 ];then
  19.                        iops_numjobs_1=($(awk -F ',' '{print $2}' $Cur_Dir/result/dev/$dev/$rw-$bs-4-$iodepth-$size--log2_iops.$line.log))
  20.                      elif [ "$log_num" == 2 ];then
  21.                        iops_numjobs_2=($(awk -F ',' '{print $2}' $Cur_Dir/result/dev/$dev/$rw-$bs-4-$iodepth-$size--log2_iops.$line.log))
  22.                      elif [ "$log_num" == 3 ];then
  23.                        iops_numjobs_3=($(awk -F ',' '{print $2}' $Cur_Dir/result/dev/$dev/$rw-$bs-4-$iodepth-$size--log2_iops.$line.log))
  24.                      elif [ "$log_num" == 0 ];then
  25.                        iops_numjobs_4=($(awk -F ',' '{print $2}' $Cur_Dir/result/dev/$dev/$rw-$bs-4-$iodepth-$size--log2_iops.$line.log))
  26.                      else
  27.                        printf "something wrong \n"
  28.                      fi
  29.                                         [fly]echo -e "${iops_numjobs_1[0]}" "${iops_numjobs_2[0]}" "${iops_numjobs_3[0]}" "${iops_numjobs_4[0]}"[/fly][fly]此时调用可正常输出内容[/fly]
  30.                    done
  31.                      echo -e "${iops_numjobs_1[0]}" "${iops_numjobs_2[0]}" "${iops_numjobs_3[0]}" "${iops_numjobs_4[0]}"[fly]此时调用则无数值了[/fly]
  32.                   for i in {0..30};
  33.                    do
  34.                    let iops_total[$i]=iops_numjobs_1[$i]+iops_numjobs_2[$i]+iops_numjobs_3[$i]+iops_numjobs_4[$i]
  35.                    done
  36.                  printf "%s\n" "${iops_total[@]}" |tee $Cur_Dir/result/$dev-$rw-$bs-4-$iodepth-$size-iops.xls
  37.                done
  38.            done
  39.       done
  40.    done
  41. done
  42. }
复制代码


论坛徽章:
0
发表于 2018-09-24 09:32 |显示全部楼层
ls $Cur_Dir/result/dev/$dev|grep "^$rw-$bs-4-$iodepth-$size--log2_iops."|cut -d "." -f 2 |while read line
这一行需要更改为for 循环,而不是while read 循环就可以了

论坛徽章:
0
发表于 2018-09-25 14:17 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
发表于 2018-09-25 15:20 |显示全部楼层
xxx | while 的变量在subshell里面
http://www.tldp.org/LDP/abs/html/x17974.html#AVOIDSUBSHELL
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP