免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3027 | 回复: 18

变量赋值的问题[已解决] [复制链接]

论坛徽章:
0
发表于 2008-07-10 09:48 |显示全部楼层
log中的数据是这样的:
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCity:SZX dstCity:NKG flightNo:null airLine:null sid:6TOUR result:failed
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCityIG dstCity:KMG flightNo:null airLine:null sidN result:success
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCityEK dstCity:ENY flightNo:null airLine:null sid:KX result:success
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCity:FOC dstCity:CGO flightNo:null airLine:null sidN result:success
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCity:CGO dstCity:LHW flightNo:null airLine:null sidN result:success
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCity:HGH dstCity:CTU flightNo:null airLine:null sid:6TOUR result:failed
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCity:CTU dstCity:HGH flightNo:null airLine:null sidN result:success
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCity:CTU dstCity:CKG flightNo:null airLine:null sidN result:success

这个shell是用来统计每个小时对外服务的次数
脚本是这样的:
yesterdaydate=`date -d yesterday +%F`
file="kuxu.log.$yesterdaydate"
cp /mnt/154logs/$file /var/tec/fengwei/0.154-logs/$file
cd /var/tec/fengwei/0.154-logs
i=0
while [ $i -le 23 ]
do
  if [ $i -le 9 ] ;then
  a$i=$(more $file |awk -F "[ ]+" '$2~/0${i}:[0-9][0-9]:[0-9][0-9]/ {print $8}' |sort -rn |uniq -c |sort -rn)
  else
  a$i=$(more $file |awk -F "[ ]+" '$2~/${i}:[0-9][0-9]:[0-9][0-9]/ {print $8}' |sort -rn |uniq -c |sort -rn)
  echo a${i} ${i}点情况 >>/var/tec/fengwei/154.log
  i=$(($i+1))
  fi
done

想实现的是1点钟的数据如下:
[root@testserver src]# a1=$(more $file |awk -F "[ ]+" '$2~/01:[0-9][0-9]:[0-9][0-9]/ {print $8}' |sort -rn |uniq -c |sort -rn)
[root@testserver src]# echo $a1
3322 sid:6TOUR 2204 sidN 796 sid:KX 172 sid:feeyo 36 sid:KPIAO

2点的如下:
[root@testserver src]# a2=$(more $file |awk -F "[ ]+" '$2~/02:[0-9][0-9]:[0-9][0-9]/ {print $8}' |sort -rn |uniq -c |sort -rn)
[root@testserver src]# echo $a2
3122 sid:6TOUR 1238 sidN 491 sid:KX 104 sid:feeyo 9 sid:KPIAO
最后在文件里做汇总

现在的问题是:
a$i不能正常的被赋值,a1 a2 a3等则正常

麻烦大家看看

错误信息:
[root@testserver src]# sh 154pachong_new.sh
154pachong_new.sh: line 14: a0=: command not found
154pachong_new.sh: line 14: a0=: command not found


[ 本帖最后由 肥嘟嘟 于 2008-7-10 15:07 编辑 ]

论坛徽章:
0
发表于 2008-07-10 09:52 |显示全部楼层
i=1
eval a$i=2
echo $a1

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
发表于 2008-07-10 09:56 |显示全部楼层

回复 #1 肥嘟嘟 的帖子

单引号里面$是字面字符。

论坛徽章:
0
发表于 2008-07-10 10:00 |显示全部楼层
又尝试了下
a$i=$(more $file |awk -F "[ ]+" '$2~/0'${i}':[0-9][0-9]:[0-9][0-9]/ {print $8}' |sort -rn |uniq -c |sort -rn)
shell报错 "-bash: a1=: command not found"

a1=$(more $file |awk -F "[ ]+" '$2~/0'${i}':[0-9][0-9]:[0-9][0-9]/ {print $8}' |sort -rn |uniq -c |sort -rn)
正常

难道不能带变量赋值?

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
发表于 2008-07-10 10:02 |显示全部楼层

回复 #4 肥嘟嘟 的帖子

用第二个不是正常了吗?

更正:
Sorry,我看错了。

[ 本帖最后由 blackold 于 2008-7-10 10:08 编辑 ]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2008-07-10 10:04 |显示全部楼层
eval a$i=$(more $file |awk -F "[ ]+" '$2~/0'${i}':[0-9][0-9]:[0-9][0-9]/ {print $8}' |sort -rn |uniq -c |sort -rn)

论坛徽章:
0
发表于 2008-07-10 10:07 |显示全部楼层

回复 #5 blackold 的帖子

我想达到的效果是
i=1
a$i=b'$i' ,即a1=b1

赋值的时候不可以赋给一个带变量的值?例如a$i这样的

论坛徽章:
0
发表于 2008-07-10 10:09 |显示全部楼层

回复 #6 大大狗 的帖子

[root@testserver src]# eval a$i=$(more $file |awk -F "[ ]+" '$2~/0'$i':[0-9][0-9]:[0-9][0-9]/ {print $8}' |sort -rn |uniq -c |sort -rn)
-bash: 833: command not found

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
发表于 2008-07-10 10:14 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2008-07-10 10:21 |显示全部楼层

回复 #9 waker 的帖子

不好意思,并不是藏着掖着

log中的数据是这样的:
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCity:SZX dstCity:NKG flightNo:null airLine:null sid:6TOUR result:failed
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCityIG dstCity:KMG flightNo:null airLine:null sidN result:success
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCityEK dstCity:ENY flightNo:null airLine:null sid:KX result:success
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCity:FOC dstCity:CGO flightNo:null airLine:null sidN result:success
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCity:CGO dstCity:LHW flightNo:null airLine:null sidN result:success
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCity:HGH dstCity:CTU flightNo:null airLine:null sid:6TOUR result:failed
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCity:CTU dstCity:HGH flightNo:null airLine:null sidN result:success
2008-07-09 00:00:47 [kuxu]-[INFO]  orgCity:CTU dstCity:CKG flightNo:null airLine:null sidN result:success

这个shell是用来统计每个小时对外服务的次数
脚本是这样的:
yesterdaydate=`date -d yesterday +%F`
file="kuxu.log.$yesterdaydate"
cp /mnt/154logs/$file /var/tec/fengwei/0.154-logs/$file
cd /var/tec/fengwei/0.154-logs
i=0
while [ $i -le 23 ]
do
  if [ $i -le 9 ] ;then
  a$i=$(more $file |awk -F "[ ]+" '$2~/0${i}:[0-9][0-9]:[0-9][0-9]/ {print $8}' |sort -rn |uniq -c |sort -rn)
  else
  a$i=$(more $file |awk -F "[ ]+" '$2~/${i}:[0-9][0-9]:[0-9][0-9]/ {print $8}' |sort -rn |uniq -c |sort -rn)
  echo a${i} ${i}点情况 >>/var/tec/fengwei/154.log
  i=$(($i+1))
  fi
done

想实现的是1点钟的数据如下:
[root@testserver src]# a1=$(more $file |awk -F "[ ]+" '$2~/01:[0-9][0-9]:[0-9][0-9]/ {print $8}' |sort -rn |uniq -c |sort -rn)
[root@testserver src]# echo $a1
3322 sid:6TOUR 2204 sidN 796 sid:KX 172 sid:feeyo 36 sid:KPIAO

2点的如下:
[root@testserver src]# a2=$(more $file |awk -F "[ ]+" '$2~/02:[0-9][0-9]:[0-9][0-9]/ {print $8}' |sort -rn |uniq -c |sort -rn)
[root@testserver src]# echo $a2
3122 sid:6TOUR 1238 sidN 491 sid:KX 104 sid:feeyo 9 sid:KPIAO
最后在文件里做汇总

现在的问题是:
a$i不能正常的被赋值,a1 a2 a3等则正常

麻烦大家看看

[ 本帖最后由 肥嘟嘟 于 2008-7-10 10:25 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时9.5折

【架构革新 高效可控】2020年8月17日~19日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP