在 GNU Bash 中,diff <(df) <(ls)
正在运行。
在 中sh
,它没有运行。
我也试过了[[diff </bin/df <bin/ls]]
,仍然出错:
$ [[/usr/bin/diff < (/bin/ls) < (bin/df)]]
sh: 1: Syntax error: "(" unexpected
$ bash
有人知道相当于什么吗sh
?非常感谢您的帮助。
答案1
没有直接等同于<(…)
>(…)
替换的东西——您需要手动创建命名管道作为替代:
mkfifo /tmp/lspipe
mkfifo /tmp/dfpipe
/bin/ls > /tmp/lspipe &
/bin/df > /tmp/dfpipe &
/usr/bin/diff /tmp/lspipe /tmp/dfpipe
rm /tmp/lspipe /tmp/dfpipe
(另请注意,在 Bash 中,不<
和之间的空格(…)
。)
在这种情况下, 绝对没有意义[[…]]
。它们不是用于分组命令,而是用于编写条件表达式(不要将它们与( )
或混淆,后者用于分组命令)。它也是 Bash 特有的功能,但在正确使用的地方,可以用或{ }
替换它。[ … ]
expr