bash では OK ですが、sh では OK ではありません - diff < (ls)

bash では OK ですが、sh では OK ではありません - diff < (ls)

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

関連情報