我有以下命令:如何爲每個stdin行執行命令?
$ cmd-a | while read -r line; do echo "${line}"; cmd-b; done
這種運作良好,並會爲所有意圖和目的看起來像cmd-a
只是打印標準輸出正常,但每條線路我們執行cmd-b
爲好。
有沒有更乾淨的方法來做到這一點?
cmd-a | xargs -n1 cmd-b
將是很好的,但它分裂的所有空白(我知道GNU xargs的有-d
選項,但它不幸的是沒有提供給我,),並會抑制cmd-a
輸出。
@JohnKugelman好點,謝謝!你說得對,我希望'cmd-a'的輸出被寫入到標準輸出以及'cmd-b'的輸出中。我會更新問題更清楚。 –
@anubhava不確定你的意思。我知道過程替代是什麼,但是如何在這種情況下應用它? –
'while IFS = read -r line;做回聲「$ {line}」; CMD-B;完成<(cmd-a)' – anubhava