免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(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
2 [报告]
发表于 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
3 [报告]
发表于 2008-07-10 09:56 |只看该作者

回复 #1 肥嘟嘟 的帖子

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

论坛徽章:
0
4 [报告]
发表于 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
5 [报告]
发表于 2008-07-10 10:02 |只看该作者

回复 #4 肥嘟嘟 的帖子

用第二个不是正常了吗?

更正:
Sorry,我看错了。

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

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 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
7 [报告]
发表于 2008-07-10 10:07 |只看该作者

回复 #5 blackold 的帖子

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

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

论坛徽章:
0
8 [报告]
发表于 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
9 [报告]
发表于 2008-07-10 10:14 |只看该作者

回复 #6 大大狗 的帖子

这样也是显然也是错的,eval后相当于  a1=1 2 3,要进一步引用才行


to 楼主:把你的数据例子和结果例子帖出来,藏着掖着受累的是大家,损失的是人品

论坛徽章:
0
10 [报告]
发表于 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 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP