[英]Diffrence between $(git ls-files -s | wc -l ) and $(git ls-files -s >out && wc -l <out)
$(git ls-files -s | wc -l)
和$(git ls-files -s >out && wc -l <out)
這兩個命令是一樣的$(git ls-files -s | wc -l)
最終得到錯誤。
當您將一個程序的輸出通過管道傳輸到另一個程序的輸入中時,如下所示:
$(git ls-files -s | wc -l)
...這些程序可以同時運行。 wc
會在收到行后立即開始計數。 該管道還將git
的輸出定向到wc
的輸入,而沒有任何中間文件。
請注意,在這種情況下,即使git
命令由於某種原因失敗, wc
也會運行,因此您將獲得wc
輸出(大多數情況下為0
)。
在第二個示例中:
$(git ls-files -s >out && wc -l <out)
...首先運行git
命令,並將其結果存儲在名為out
的文件out
。 然后,如果成功,則wc
運行並計算行數。 由於&&
,如果git
命令失敗,則wc
根本不會運行。 在這兩種情況下,你就會有一個文件名為out
周圍鋪設與結果git
它的命令。
管道通常更好; 它會運行得更快,並且如果您不需要保留中間結果,則不會有任何副作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.