注:
$ 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)