请注意:
$ diff <(echo a) <<<b
diff: missing operand after '/dev/fd/63'
diff: Try 'diff --help' for more information.
Run Code Online (Sandbox Code Playgroud)
我知道<(...)效果很好:
$ diff <(echo a) <(echo b)
1c1
< a
---
> b
Run Code Online (Sandbox Code Playgroud)
我也知道<<<一般情况下效果很好:
$ cat <<<a
a
Run Code Online (Sandbox Code Playgroud)
那么正确的调用方法是什么diff?
ste*_*ver 30
该diff命令需要文件名参数,而此处的字符串<<<写入标准输入。然而却man diff告诉我们
如果 FILE 为“-”,则读取标准输入。
所以
$ diff <(echo a) - <<<b
1c1
< a
---
> b
Run Code Online (Sandbox Code Playgroud)
这同样适用于此处的文档:
$ diff <(echo a) - << \EOF
b
EOF
1c1
< a
---
> b
Run Code Online (Sandbox Code Playgroud)
Sté*_*las 11
在具有/dev/fd/x设备的系统上,您可以执行以下操作:
diff /dev/fd/3 3<< EOF3 /dev/fd/4 4<< EOF4
some text
EOF3
some other text
EOF4
Run Code Online (Sandbox Code Playgroud)
使用 Bourne shell 的<<此处文档重定向运算符。
diff /dev/fd/3 3<<< 'some text' /dev/fd/4 4<<< 'some other text'
Run Code Online (Sandbox Code Playgroud)
使用 zsh 的<<<此处字符串重定向运算符。
在 zsh 中,您还可以执行以下操作:
diff <(<<<'some text') <(<<<'some other text')
Run Code Online (Sandbox Code Playgroud)