免费注册 查看新帖 |

Chinaunix

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

请教变量引用问题 [复制链接]

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-08-25 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-18 16:43 |显示全部楼层 |倒序浏览
#!/usr/local/bin/bash
cat $1 | tr -d '\015' > TEMP
limit=31
for ((i=1; i<=limit; i++))
do
ss=`sed -n ${i}p TEMP | awk '{print $12}'`
echo $ss
ss1='sed -n ${i}p TEMP | awk '{print $1}'`
echo $ss1
done

请教,如上脚本,ss=`sed -n ${i}p TEMP | awk '{print $12}'` 这一句错在那里?

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-08-25 06:20:00
2 [报告]
发表于 2008-09-18 17:04 |显示全部楼层
全部试过了,都不行,运行这个脚本后,一只停住不动,没有任何反映

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-08-25 06:20:00
3 [报告]
发表于 2008-09-18 17:06 |显示全部楼层
原帖由 blackold 于 2008-9-18 16:47 发表
''与""是不同的,单引号与双引号的区别.


黑哥的意思是要ss="sed -n ${i}p TEMP | awk '{print $12}'"这样?

也不行啊

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-08-25 06:20:00
4 [报告]
发表于 2008-09-18 17:09 |显示全部楼层
原帖由 leetaedong 于 2008-9-18 17:07 发表
你不是第一个不行的, 也不会是最后一个.



什么意思?

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-08-25 06:20:00
5 [报告]
发表于 2008-09-18 17:13 |显示全部楼层
原帖由 waker 于 2008-9-18 17:11 发表
ss1='sed -n ${i}p TEMP | awk '{print $1}'`

这一行看起来是外8字



大哥们,能不能说直接点,我看不懂你们高深莫测的话啊
如果你说第一个`错了,是我打错了,

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-08-25 06:20:00
6 [报告]
发表于 2008-09-18 17:17 |显示全部楼层

回复 #12 leetaedong 的帖子

大家面对我这菜鸟的心情我理解,可是真的没有任何报错信息,/var/log/message没有相关信息,脚本运行后没有任何反映.源文件如下:
1 2 3 4 5 6 7 8

N列文件,我想打印每一行的第12列,实际上这第12列有可能某些行不存在的.

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-08-25 06:20:00
7 [报告]
发表于 2008-09-18 17:20 |显示全部楼层
学习SHELL是个很漫长的过程,我的方法是在实际需求中学习,因为没有需求,就没有目标,可能你们会说要先打基础,可是有些细节方面,没有实际遇到问题,记不住的,像这次的问题,我完全不知道从那里下手解决这个问题,根本不知道那里有错误,因为就我目前的进度看不出问题.

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-08-25 06:20:00
8 [报告]
发表于 2008-09-18 18:17 |显示全部楼层
原帖由 blackold 于 2008-9-18 17:52 发表
还不行?



确实还不行.我觉得,问题是不是出在FOR 上面?还是 i 的引用方法不对?我单独运行 sed 1p temp | awk '{print $12}' 是没问题的,但是我想把每一行的$12都提取出来,并和某个数值进行比较,然后再sed下一行,我想不出除了for循环,还有什么其他的方法.
难道把所有行的$12都提取到某个临时文件,然后再一个个的读取出来进行比较么?

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-08-25 06:20:00
9 [报告]
发表于 2008-09-18 18:24 |显示全部楼层
好像使用awk 可以很方便做到我的需求,我试试先,觉得好像走入了一个误区
awk '{if ( -z $12) print $1 "shi kong de"}' input.txt

??

[ 本帖最后由 donggua0713 于 2008-9-18 18:26 编辑 ]

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-08-25 06:20:00
10 [报告]
发表于 2008-09-18 18:49 |显示全部楼层

回复 #20 blackold 的帖子

脚本运行后停住不动没有任何信息
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP