免费注册 查看新帖 |

Chinaunix

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

请教:脚本中使用awk的变量问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-04 12:40 |只看该作者 |倒序浏览
在脚本中调用awk或grep发现不能使用变量,请高手指教
#! /bin/bash
LATEST_FILE="4.test"
FILELIST_LOG=tmp.list
awk '{ while ( getline >0 )  { if ( $1 ~ /$LATEST_FILE/) { exit } else { print $1 }} }' $FILELIST_LOG
原本希望显示4.test前的字符串后退出,执行后不能匹配到4.test
[test@WebServer eriback]$ more tmp.list
(218.200.221.33:test)
bytes)
1.test
2.test
3.test
4.test
[test@WebServer eriback]$ ./testawk
bytes)
1.test
2.test
3.test
4.test
把脚本改成
#! /bin/bash
LATEST_FILE="4.test"
FILELIST_LOG=tmp.list
awk '{ while ( getline >0 )  { if ( $1 ~ /4.test/) { exit } else { print $1 }} }' $FILELIST_LOG
就没有问题
[test@WebServer eriback]$ ./testawk
bytes)
1.test
2.test
3.test

论坛徽章:
0
2 [报告]
发表于 2011-06-04 13:04 |只看该作者
把awk中的shell变量这样'$LATEST_FILE'或'"$LATEST_FILE"'引起来

论坛徽章:
0
3 [报告]
发表于 2011-06-04 13:36 |只看该作者
感谢楼上,再请教一下ls带变量呢
[test@WebServer ftptestloc]$ more testinteg
#! /bin/bash
for file in `cat /home/test/ftptestloc/tmp.list`
do
echo $file
ls '$file'
done

[test@WebServer ftptestloc]$ ./testinteg
1.test
ls: $file: No such file or directory
2.test
ls: $file: No such file or directory
3.test
ls: $file: No such file or directory
4.test
ls: $file: No such file or directory

试了用‘’ 或“”或不带都是这样

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
4 [报告]
发表于 2011-06-04 13:48 |只看该作者
回复 3# dracula2011


    双引号

论坛徽章:
0
5 [报告]
发表于 2011-06-04 14:17 |只看该作者
试过
[test@WebServer ftptestloc]$ ./testinteg
1.test
: No such file or directory
2.test
: No such file or directory
3.test
: No such file or directory
4.test
: No such file or directory
[test@WebServer ftptestloc]$ more testinteg
#! /bin/bash
for file in `cat /home/test/ftptestloc/tmp.list`
do
echo $file
ls "$file"
done

论坛徽章:
0
6 [报告]
发表于 2011-06-04 15:58 |只看该作者
回复 5# dracula2011


   请确定一下1.txt,2.txt等文件的位置,以及你当前执行脚本的目录位置,是否在同一目录

论坛徽章:
0
7 [报告]
发表于 2011-06-04 18:19 |只看该作者
确实如楼上所说脚本和tmp.list,*.test必须在一个目录,但是什么呢,如何解决
#! /bin/bash
FTPLIST_LOG="/home/test/ftptestloc/BSC01alog/tmp.list"
FTP_LOCDIR="/home/test/ftptestloc/BSC01alog/110604/"
for file in `cat $FTPLIST_LOG`
do
echo $file
ls "$file"
A=$FTP_LOCDIR$file
echo "$A"
ls  "$A"
ls '$A'
ls $A
#ls $FTP_LOCDIR$file
done


输出
[test@WebServer ftptestloc]$ ./lstest
1.test
: No such file or directory
/home/test/ftptestloc/BSC01alog/110604/1.test
: No such file or directorySC01alog/110604/1.test
ls: $A: No such file or directory
: No such file or directorySC01alog/110604/1.test

论坛徽章:
0
8 [报告]
发表于 2011-06-05 11:33 |只看该作者
再顶一下,求应答

论坛徽章:
0
9 [报告]
发表于 2011-06-05 20:03 |只看该作者
done < filename
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP