什么是"wc"命令的行为?

kit*_*une 3 bash fileparsing io-redirection wc

例如:

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

echo $myCleanVar
9

echo $myDirtVar
9 myFile
Run Code Online (Sandbox Code Playgroud)

为什么在"myCleanVar"中我从"wc"命令得到一个"整数"值,而在"myDirtVar"中我得到的结果如下:"9 file.txt"?我引用了"整数"因为知道在Bash shell中默认情况下都被视为一个字符串,但无法理解第一个和第二个表达式的行为差异.在这种情况下,重定向"<"的特殊效果是什么?

enr*_*cis 5

man换页wc说:

名称

   wc - print newline, word, and byte counts for each file
Run Code Online (Sandbox Code Playgroud)

概要

   wc [OPTION]... [FILE]...
   wc [OPTION]... --files0-from=F
Run Code Online (Sandbox Code Playgroud)

描述

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

因此,当您将文件作为参数传递时,它还将打印文件的名称,因为您可以传递多个文件以wc使其计数行,因此您知道哪个文件具有该行数.当然,当你使用stdin它时,它不知道文件的名称,所以它不打印它.

$ wc -l FILE1 FILE2
  2 FILE1
  4 FILE2
  6 total
Run Code Online (Sandbox Code Playgroud)


pqn*_*net 5

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

wc将所有这些信息放在一起,您就可以得到示例中 的行为的原因

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