Bash

在管道中呼叫函式

  • April 21, 2021

我有一個腳本使用相當長的管道很多次。每個管道的中間是相同的命令鏈。只有開頭和結尾會一直延遲使用。

Different-command-1 |
command A |
command B |
command C |
diff-cmd-2

有沒有辦法將此命令作為管道中的函式呼叫?像:

same-commands() {
   command A |
   command B |
   command C 
}

Different-command-1 |
same-commands |
diff-cmd-2

Different-command-3 |
same-commands |
diff-cmd-4

在我的情況下,這會在我的腳本中節省很多行,但我無法弄清楚它是如何工作的。

函式中的命令使用與函式本身相同的 stdin 和 stdout 執行,因此我們可以將管道放入函式中,然後將函式粘貼到另一個管道中,就像任何其他命令一樣:

func() { 
   tr a x | 
   tr b x
}
echo abc | func | tr c x

這列印xxx

引用自:https://unix.stackexchange.com/questions/409556