Bash “的行为是什么?”;wc";指挥部?

Bash “的行为是什么?”;wc";指挥部?,bash,io-redirection,wc,fileparsing,Bash,Io Redirection,Wc,Fileparsing,例如: myCleanVar=$( wc -l < myFile ) myDirtVar=$( wc -l myFile ) echo $myCleanVar 9 echo $myDirtVar 9 myFile myCleanVar=$(wc-l

例如:

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

echo $myCleanVar
9

echo $myDirtVar
9 myFile
myCleanVar=$(wc-l

为什么在“myCleanVar”中,我从“wc”命令中得到一个“整型”值,而在“myDirtVar”中,我得到类似于:“9 file.txt”的值?我引用了“integer”,因为我知道在bashshell中,默认情况下,所有内容都被视为字符串,但无法理解第一个表达式和第二个表达式行为的差异。重定向的特殊效果是什么“针对
wc
man
页面显示:

名字

概要

   wc [OPTION]... [FILE]...
   wc [OPTION]... --files0-from=F
描述

打印每个文件的换行、字和字节计数,如果指定了多个文件,则打印总行数

因此,当您将文件作为参数传递时,它还将打印文件名,因为您可以将多个文件传递到
wc
,以便它计算行数,因此您知道哪个文件具有该行数。当然,当您使用
stdin
时,它不知道文件名,因此不会打印它

例子
默认情况下,
wc
将列出允许您在多个文件上使用的文件名(并且对所有文件都有结果)。如果未指定文件名,则“标准输入”,通常是控制台输入,但不打印文件名。
为什么不直接在shell中尝试这两种方法,直接观察行为?谢谢!你说得对,重定向“欺骗”了wc文件的内容是通过键盘输入的。简单地说:输入重定向“删除”文件名,因此wc没有任何文件名可打印。厕所太差了。嗯,我想做一件t恤衫,t恤上写着“带着<厕所很烂!”:P
   wc [OPTION]... [FILE]...
   wc [OPTION]... --files0-from=F
$ wc -l FILE1 FILE2
  2 FILE1
  4 FILE2
  6 total