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中默认情况下都被视为一个字符串,但无法理解第一个和第二个表达式的行为差异.在这种情况下,重定向"<"的特殊效果是什么?
该man换页wc说:
名称
Run Code Online (Sandbox Code Playgroud)wc - print newline, word, and byte counts for each file概要
Run Code Online (Sandbox Code Playgroud)wc [OPTION]... [FILE]... wc [OPTION]... --files0-from=F描述
打印每个FILE的换行符,单词和字节计数,如果指定了多个FILE,则打印总行数.
因此,当您将文件作为参数传递时,它还将打印文件的名称,因为您可以传递多个文件以wc使其计数行,因此您知道哪个文件具有该行数.当然,当你使用stdin它时,它不知道文件的名称,所以它不打印它.
$ wc -l FILE1 FILE2
2 FILE1
4 FILE2
6 total
Run Code Online (Sandbox Code Playgroud)
wc默认情况下会列出文件名,允许您在多个文件上使用它(并且有所有文件的结果)。如果未指定文件名,则使用“标准输入”(通常是控制台输入),并且不打印文件名。需要<指定“输入重定向”,即从给定文件读取输入而不是使用用户输入。
wc将所有这些信息放在一起,您就可以得到示例中 的行为的原因
提问时间: 的输出是什么cat file | wc -l?