红联Linux门户
Linux帮助

Linux系统下ls、wc命令的一个问题

发布时间:2007-11-17 01:17:34来源:红联作者:bitrated
看到关于ls和wc命令的一个问题,具体如下:
[qianxb@aa qianxb]$ cat a.sh
#!/bin/bash

num=`ls |wc -l`

new=q$num

echo $new

执行结果为"q 2",中间有一个空格。
这个中间有两个问题:
1)ls显视的结果只有一行,但wc统计的结果是两行
2)最后回显的结果中间有一个空格

问题一:
执行ls命令,显示如下:
[qianxb@aa qianxb]$ ls
a.sh s.pl
将ls命令的结果通过管道传递给wc进行处理,结果如下:
[qianxb@aa qianxb]$ ls | wc -l
2

从wc的结果可看出ls显示的a.sh和s.pl文件中件存在一个换行符(newline)。
将ls输出结果重定向到文件,结果如下:
[qianxb@aa qianxb]$ ls | tee a
a.sh
s.pl

由此判定,ls输出的结果虽然在屏幕显示上为一行,但实际上中间存在换行符。

问题二:
wc命令显示的结果中间存在空格,故需要专门去除,或使用其他命令。
num=`ls |wc -l | tr -d '[:blank:]' `

num=`ls |wc -l |awk '{print $1}'`

综上,修改程序
[qianxb@aa qianxb]$ cat a.sh
#!/bin/bash

num=`ls |wc -l | tr -d '[:blank:]' `
#num=`ls |wc -l |awk '{print $1}'`

new=q$num

echo $new
文章评论

共有 0 条评论