0

最初のコマンドが 2 番目の形式で記述されている場合と同じように、2 つのコマンド$(git ls-files -s | wc -l)が異なるか同じか、エラーが発生します。$(git ls-files -s >out && wc -l <out)


あなたの透明性は、background-color

理解するには JSFiddle を参照してください。何を達成したいのかわかりませんが、そのプロパティの使用をやめると、透明度が元に戻ります。

https://jsfiddle.net/ze71zuej/

4

1 に答える 1

3

次のように、あるプログラムの出力を別のプログラムの入力にパイプする場合:

$(git ls-files -s | wc -l)

...プログラムは同時に実行されます。wc受信するとすぐに行のカウントを開始します。パイプはまた、中間ファイルなしで の出力gitを の入力に転送します。wc

この場合、何らかの理由でコマンドが失敗してwcも実行されるため、出力が得られることに注意してください (ほとんどの場合、)。gitwc0

あなたの2番目の例では:

$(git ls-files -s >out && wc -l <out)

...gitコマンドが最初に実行され、その結果が というファイルに保存されoutます。次に、それが成功した場合wcは、行を実行してカウントします。のため&&gitコマンドが失敗wcすると、まったく実行されません。どちらの場合でも、コマンドoutの結果を含むという名前のファイルが作成されます。git

配管は一般的に優れています。より高速に実行され、中間結果を保持する必要がなければ、副作用はありません。

于 2017-03-06T18:20:40.840 に答える