非常に長いパイプを何度も使用するスクリプトがあります。各パイプの中央には同じコマンドスキームがあります。使用時に開始と終了のみが遅れます。
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
私の場合、スクリプト内の多くの行を節約できますが、これがどのように機能するのかわかりません。
答え1
関数内のコマンドは、関数自体と同じ stdin と stdout を使用して実行されるため、他のコマンドと同様に、関数にパイプを配置してから、関数を別のパイプに貼り付けることができます。
func() {
tr a x |
tr b x
}
echo abc | func | tr c x
が印刷されますxxx
。