我經常發現自己做這樣的事情很多:如何將bash函數的參數擴展爲管道命令鏈?
something | grep cat | grep bat | grep rat
當所有我記得是那三個字一定是什麼地方發生,以某種順序,在something
輸出......現在,我可以做這樣的事情:
something | grep '.*cat.*bat.*rat.*'
但這意味着排序(蝙蝠出現在貓後)。因此,我想添加一個bash功能我的環境下調用mgrep
這將打開的:
mgrep cat bat rat
到
grep cat | grep bat | grep rat
,但我不太清楚如何做到這一點(或者是否存在是另一種選擇?)。一個想法是用於遍歷像這樣的參數:
while (($#)); do
grep $1 some_thing > some_thing
shift
done
cat some_thing
其中SOME_THING可能是當一個人確實在bash >(cmd)
,但我不知道一些FIFO等。如何繼續?
這可能會有所幫助:http://stackoverflow.com/questions/941338/ shell-script-how-to-pass-command-line-arguments-to-unix-alias – Levon
將整個管道生成爲一個字符串,並用'eval'執行它 – alexis
是的,我想到了一個bash函數,謝謝亞歷克西斯,這是一個好主意,讓我嘗試一下。 –