bash <<<演算子をdiffで使用する方法は?

bash <<<演算子をdiffで使用する方法は?

注:

$ diff <(echo a) <<<b
diff: missing operand after '/dev/fd/63'
diff: Try 'diff --help' for more information.

私は<(...)これがうまく動作することを知っています。

$ diff <(echo a) <(echo b)
1c1
< a
---
> b

私も<<<これが一般的にうまく動作することを知っています。

$ cat <<<a
a

もしそうなら、それを呼び出す正しい方法は何ですかdiff

答え1

このdiffコマンドはファイル名パラメータとここにある文字列は<<<標準入力に書き込まれます。しかし、それはman diff私たちに言います。

FILEが"-"の場合、標準入力を読み込みます。

だから

$ diff <(echo a) - <<<b
1c1
< a
---
> b

ここでも同様に適用されます。文書:

$ diff <(echo a) - << \EOF
b
EOF
1c1
< a
---
> b

答え2

デバイスがあるシステムでは、/dev/fd/x次のことができます。

diff /dev/fd/3 3<< EOF3 /dev/fd/4 4<< EOF4
some text
EOF3
some other text
EOF4

Bourneシェルのこちらの<<ドキュメントリダイレクト演算子を使用してください。

diff /dev/fd/3 3<<< 'some text' /dev/fd/4 4<<< 'some other text'

zshの<<<here文字列リダイレクト演算子を使用してください。

zshでは、次のこともできます。

diff <(<<<'some text') <(<<<'some other text')

答え3

<()以下を組み合わせることができますcat <<<

diff <(echo a) <(cat <<<b)

Steeldriverの答えは、1つのパラメータのみを使用する必要がある場合は機能しますが、両方のパラメータを<<<使用する必要がある場合は、次のように動作します。

diff <(cat <<<a) <(cat <<<b)

しかし、here-stringが必要な理由は明確ではありません。<(cat <<<a)間に大きな違いはありません。<(echo a)

関連情報