利用linux 中的shell script做 #!/bin/bash a=`ls $1 |grep -h access.log.0905` b=`wc -l $a`

施行的命令如下:./case10-1 /home/LE 现在遇到难题,shell script中 已经在a中筛选出了新对象,现在要对新对象们统计它们的行数 貌似wc -l 命令不可以
最新回答
好感都给你

2021-01-23 04:48:51

你的用法绝对是没错的,但是现在问题在于,你最后输出的$a中,只有文件名,没有带绝对路径,所以你在wc -l的时候,不一定能找到文件。
你试试在脚本中加上cd $1
#!/bin/bash
cd $1
a=`ls $1 | grep -h access.log.0905`
b=`wc -l $a`
——————————————————

还有你在用grep的时候用到了h选项,不知道是出于什么考虑。我理解你这个地方带不带h结果都一样。
grep的-h选项 表示查询多文件时不显示文件名。
示例:打印含有字符串”Oct”所在的行内容,并且不显示其文件名:
$grep -h "Oct" *
47 Oct 3zl1998 LPSX 43.00 kvm90 512
冭儍冭迗眞

2024-01-20 20:16:35

为什么不直接写在a里呢。
a=`ls $1 | grep -h access.log.0905 | wc -l`
何必单独还写个变量b
哥的名称亮瞎你的狗眼

2022-01-01 03:57:12

如果a出来是个文件列表,wc -l 只能针对单个文件,就需要用循环:
echo "$a"|while read file
do
wc -l $file
done

如果a出来是文件中的内容,计算行数这样:
b=`echo "$a"|wc -l`
蔓草离离

2021-11-30 01:28:09

好像是加入-u 命令