3

例えば:

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

echo $myCleanVar
9

echo $myDirtVar
9 myFile

「myCleanVar」では「wc」コマンドから「整数」値を取得し、「myDirtVar」では「9 file.txt」のような値を取得するのはなぜですか? Bashシェルではデフォルトですべてが文字列として扱われることを知っているので、「整数」を引用しましたが、最初と2番目の式の動作の違いを理解できません。この場合のリダイレクト「<」の特定の効果は何ですか?

4

2 に答える 2

5

manページにwcは次のように書かれています。

名前

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

あらすじ

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

説明

各 FILE の改行数、単語数、およびバイト数を出力し、複数の FILE が指定されている場合は合計行数を出力します。

したがって、ファイルを引数として渡すと、ファイルの名前も出力されます。これは、行をカウントするために複数のファイルを渡すことができるためwc、どのファイルにその行カウントがあるかがわかります。もちろん、stdin代わりに を使用すると、ファイルの名前がわからないため、印刷されません。

$ wc -l FILE1 FILE2
  2 FILE1
  4 FILE2
  6 total
于 2014-08-17T10:39:19.643 に答える
4

wcデフォルトでは、ファイルの名前がリストされ、複数のファイルで使用できるようになります(それらすべての結果が得られます)。ファイル名が指定されていない場合、通常はコンソール入力である「標準入力」が使用され、ファイル名は表示されません。ユーザー入力を使用する代わりに、指定された<ファイルから入力を読み取る「入力リダイレクト」を指定するために必要です。

このすべての情報をまとめるとwc、例での の動作の理由がわかります

質問時間: の出力はcat file | wc -l?

于 2014-08-17T10:41:56.490 に答える