OK no bash, não OK no sh - convert diff

OK no bash, não OK no sh - convert diff

No GNU Bash, diff <(df) <(ls)está em execução.
Em sh, não é.
Eu também tentei [[diff </bin/df <bin/ls]], ainda erro:

$ [[/usr/bin/diff < (/bin/ls) < (bin/df)]]
sh: 1: Syntax error: "(" unexpected
$ bash

alguém sabe o equivalente a sh? Realmente aprecio a ajuda.

Responder1

Não há equivalente direto para <(…) >(…)substituições – você precisará criar pipes nomeados manualmente como substituição:

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

(Observe também que no Bash, hánãoespaço entre o <e o (…).)

Isso [[…]]não faz absolutamente nenhum sentido neste contexto. Eles não servem para agrupar comandos, mas para escrever expressões condicionais (não os confunda com ( )ou { }quais agrupam comandos). Também é um recurso específico do Bash, mas em locais onde é usado corretamente, pode ser substituído por [ … ]ou por expr.

informação relacionada