为什么bash在使用后退时返回文件目录?

时间:2016-07-05 16:48:45

标签: bash syntax backticks

我正在运行这一系列命令

passwd=`wc -l /etc/passwd`

echo $passwd

返回:

34 /etc/passwd

我需要做些什么才能显示wc -l的输出?

4 个答案:

答案 0 :(得分:1)

只需从标准输入读取而不是给wc文件名:

$ passwd=`wc -l < /etc/passwd`
$ echo "$passwd"
      86

wc仍会输出相当多的填充,但文件名被省略(因为wc不知道数据来自哪个文件)。

答案 1 :(得分:0)

这是wc的默认行为:

» wc -l /etc/passwd                                     
28 /etc/passwd

没有办法告诉wc不输出文件名。

答案 2 :(得分:0)

或许使用awk

$ passwd=$(wc -l /etc/passwd | awk '{print $1}')
$ echo $passwd
32

使用cut来自cut (GNU coreutils)

$ passwd=$(wc -l /etc/passwd | cut -d" " -f1)
$ echo $passwd
32

答案 3 :(得分:0)

wc也返回文件名,但还有其他方法可以做到。一些例子:

passwd=`wc -l /etc/passwd | grep -o [1-9]\*`

passwd=`wc -l /etc/passwd | cut -f1 -d' '`

(回答这个问题:get just the integer from wc in bash