什么是“wc”命令的行为?

时间:2014-08-17 10:35:02

标签: bash io-redirection wc fileparsing

例如:

myCleanVar=$( wc -l < myFile )
myDirtVar=$( wc -l myFile )

echo $myCleanVar
9

echo $myDirtVar
9 myFile

为什么在&#34; myCleanVar&#34;我得到一个&#34;整数&#34;来自&#34; wc&#34;的价值命令并在&#34; myDirtVar&#34;我得到像:&#34; 9 file.txt&#34;?我引用了&#34;整数&#34;因为知道在Bash shell中默认情况下所有都被视为一个字符串,但不能理解第一个和第二个表达式行为的差异。重定向的特殊效果是什么?&#34;&lt;&#34;在这种情况下?

2 个答案:

答案 0 :(得分:5)

man的{​​{1}}页说:

  

NAME

wc
     

概要

   wc - print newline, word, and byte counts for each file
     

说明

     

打印每个FILE的换行符,单词和字节数,如果指定了多个FILE,则打印总行数。

因此,当您将文件作为参数传递时,它还将打印文件的名称,因为您可以将多个文件传递给 wc [OPTION]... [FILE]... wc [OPTION]... --files0-from=F 以使其计数行,因此您知道哪个文件具有该行数。当然,当您使用wc时,它不知道文件的名称,因此不会打印它。

实施例

stdin

答案 1 :(得分:3)

wc默认情况下会列出文件名,允许您在多个文件中使用它(并且所有文件都有结果)。如果未指定文件名,则使用&#34;标准输入&#34;(通常是控制台输入),并且不打印文件名。需要<来指定&#34;输入重定向&#34;,即从给定文件中读取输入而不是使用用户输入。

将所有这些信息放在一起,您就会在示例中了解wc行为的原因

提问时间:cat file | wc -l的输出是什么?