例如:
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;在这种情况下?
答案 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
的输出是什么?